2016-02-17 45 views
5
ax = sns.barplot(x="size", y="algorithm", hue="ordering", data=df2, palette=sns.color_palette("cubehelix", 4)) 

シーボーンバープロットを作成した後(または作成する前に)、各バーのハッチング(色とともにパターンを記入する)値を渡す方法はありますか? seabornまたはmatplotlibでこれを行う方法は、大いに役立ちます!seaborn.barplotの各バーにハッチングを追加することはできますか?

+1

私はあなたが、 "個々のバー" で何を意味するかわかりません。あなたは、すべてのバーにハッチがあることを意味しますか、または異なるバーに異なるハッチングを付けることを意味しますか? – mwaskom

+0

@mwaskom返事をありがとう!私は別のハッチを持つために異なるバーが必要です。 sns.barplotに 'hatch = '//''を渡すだけで、すべてのバーが同じハッチを持つように設定できます。しかし、どのように異なるバーで異なるハッチを持っているのか分かりません。 – kxirog

答えて

12

barplotが返されたAxesSubplotをキャッチして作成したバーをループして、patchesをループすることができます。あなたはその後、.set_hatch()

を使用して、個々のバーのためのハッチを設定することができます。ここhereからbarplot例の修正版である、最小限の例です。

import matplotlib.pyplot as plt 
import seaborn as sns 

# Set style 
sns.set(style="whitegrid", color_codes=True) 

# Load some sample data 
titanic = sns.load_dataset("titanic") 

# Make the barplot 
bar = sns.barplot(x="sex", y="survived", hue="class", data=titanic); 

# Define some hatches 
hatches = ['-', '+', 'x', '\\', '*', 'o'] 

# Loop over the bars 
for i,thisbar in enumerate(bar.patches): 
    # Set a different hatch for each bar 
    thisbar.set_hatch(hatches[i]) 

plt.show() 

enter image description here

+0

ありがとう、それはまさに私が探していたものです!伝説にハッチを追加する方法があると思いますか? – kxirog

+3

ちょうどすべての人が知っているように、私はそれを理解するのに少し時間がかかったからです: '私はthisbarを列挙する(bar.patches):' fronを左から右の順に各色で繰り返します。左の青色のバー、右の青色のバー、左の緑色のバーなど。 – kxirog

+0

@kxirogハッチングを追加した後、 'plt.show()'の前に 'ax.legend()'を入れてください。 – lostsoul29

関連する問題