web-dev-qa-db-ja.com

海のバープロットの最大のバーに別の色を設定するにはどうすればよいですか?

私は、最大よりも小さいすべてのバーが淡い色であり、最大のバーがより鮮やかな色である棒グラフを作成しようとしています。良い例は、darkhorse analyticの 円グラフgif であり、円グラフを分解して、より明確なバープロットで終了します。どんな助けでも感謝します、ありがとう!

15
pmdaly

色のリストを渡すだけです。何かのようなもの

values = np.array([2,5,3,6,4,7,1])   
idx = np.array(list('abcdefg')) 
clrs = ['grey' if (x < max(values)) else 'red' for x in values ]
sb.barplot(x=idx, y=values, palette=clrs) # color=clrs)

enter image description here

(コメントで指摘されているように、それ以降のバージョンのSeabornは「色」ではなく「パレット」を使用します)

26
iayork

[バープロットの場合]データフレームからデータを取得する場合、次のことができます。

labels = np.array(df.Name)
values = np.array(df.Score) 
clrs = ['grey' if (x < max(values)) else 'green' for x in values ]
#Configure the size
plt.figure(figsize=(10,5))
#barplot
sns.barplot(x=labels, y=values, palette=clrs) # color=clrs)
#Rotate x-labels 
plt.xticks(rotation=40)

他の答えは色を定義しましたbeforeプロット。プロットに使用していた軸のパッチであるバー自体を変更することで、同様に後でを実行することもできます。 iayorkの例を再現するには:

_import seaborn
import numpy

values = numpy.array([2,5,3,6,4,7,1])   
idx = numpy.array(list('abcdefg')) 

ax = seaborn.barplot(x=idx, y=values) # or use ax=your_axis_object

for bar in ax.patches:
    if bar.get_height() > 6:
        bar.set_color('red')    
    else:
        bar.set_color('grey')
_

たとえば、直接バーをアドレス指定することもできます。 _ax.patches[7]_。 dir(ax.patches[7])を使用すると、利用できるbarオブジェクトの他の属性を表示できます。

0
Nico