2016-08-08 79 views

Antwort

1

Ich benutze Seaborn barplot mit der palette Option. Stellen Sie sich eine einfache Datenrahmen haben wie:

df = pd.DataFrame({'a':[1,2,3,4,5], 'b':[10,5,2,4,5]}) 

Seaborn mit:

sns.barplot(df['a'], df['b'], palette='Blues_d') 

Sie so etwas wie erhalten:

enter image description here

dann können Sie auch mit der palette Option spielen und colormap Hinzufügen eines Gradienten nach einigen Daten wie:

sns.barplot(df['a'], df['b'], palette=cm.Blues(df['b']*10) 

zu erhalten:

enter image description here

Hoffnung, das hilft.

+0

Vielen Dank, aber ich bin für die gleiche Steigung innerhalb jeder einzelnen Bar suchen, kein Gefälle quer durch verschiedene Bars! – cattt84

0

Wie in Pyplot: vertical gradient fill under curve? dargestellt, kann man ein Bild verwenden, um ein Verlaufsdiagramm zu erstellen.

Da die Balken rechteckig sind, kann die Ausdehnung des Bildes direkt auf die Position und Größe des Balkens eingestellt werden. Man kann alle Balken durchlaufen und ein Bild an der jeweiligen Position erzeugen. Das Ergebnis ist ein Farbverlaufsdiagramm.

import numpy as np 
import matplotlib.pyplot as plt 

fig, ax = plt.subplots() 

bar = ax.bar([1,2,3,4,5,6],[4,5,6,3,7,5]) 

def gradientbars(bars): 
    grad = np.atleast_2d(np.linspace(0,1,256)).T 
    ax = bars[0].axes 
    lim = ax.get_xlim()+ax.get_ylim() 
    for bar in bars: 
     bar.set_zorder(1) 
     bar.set_facecolor("none") 
     x,y = bar.get_xy() 
     w, h = bar.get_width(), bar.get_height() 
     ax.imshow(grad, extent=[x,x+w,y,y+h], aspect="auto", zorder=0) 
    ax.axis(lim) 

gradientbars(bar) 

plt.show() 

enter image description here