2016-11-21 83 views
4

我試圖用不同的x組和另外的hues seaborn產生boxplot。看到此代碼:Seaborn的boxplot + swarmplot:不同的顏色爲x,不同的顏色符號

tips = sns.load_dataset("tips") 

sns.stripplot(x="day", y="total_bill", hue="smoker", 
       data=tips, jitter=True, 
       palette="Set2", split=True,linewidth=1,edgecolor='gray') 

sns.boxplot(x="day", y="total_bill", hue="smoker", 
      data=tips,palette="Set2",fliersize=0) 

enter image description here

我想有各x箱圖(在該示例中,每一天)是不同的顏色,而每個hue(在這種情況下,吸菸者/非吸菸者)在大面積上用不同的符號表示。

我試圖玩palette的論點,但沒有得到我想要的。我也嘗試直接玩artists,但是改變boxplot的facecolor也會因爲某種原因改變edgecolor,我不知道如何改變swarmplot上的符號。

回答

0

你的問題的着色部分:邊緣顏色和facecolor都可以通過藝術家單獨指定。

ax = sns.boxplot(x="day", y="total_bill", hue="smoker", 
      data=tips,fliersize=0) 

colors = sns.color_palette('husl',n_colors=4) 
colors = sp.repeat(colors,2,axis=0) 

for artist,color in zip(ax.artists,colors): 
    artist.set_facecolor(color) 
    artist.set_edgecolor(color) 

而對於條紋:我也無法找到如何偶然的製造商。如果你想指定他們的顏色等,你可以通過[pc for pc in ax.get_children() if type(pc) == PathCollection]單獨獲取它們全部...