2017-11-25 151 views
1

我正在学习seaborn,并且出现了一些意想不到的行为。Python中的seaborn:barplot倒过来

这重复的例子,使用surveys.csv数据集可以在这个环节发现:http://www.datacarpentry.org/python-ecology-lesson/setup/

我的代码如下:

import pandas as pd 
import numpy as np 
import matplotlib as mpl 
import matplotlib.pyplot as plt 
import seaborn as sns 
sns.set(style="whitegrid", color_codes=True) 

surveys_df = pd.read_csv("surveys.csv") 
avg_weight = surveys_df.groupby("plot_id")["weight"].mean().to_frame() 
avg_weight 
    weight 
plot_id 
1 51.822911 
2 52.251688 
3 32.654386 
4 47.928189 
5 40.947802 
6 36.738893 
7 20.663009 
8 47.758001 
9 51.432358 
10 18.541219 
11 43.451757 
12 49.496169 
13 40.445660 
14 46.277199 
15 27.042578 
16 24.585417 
17 47.889593 
18 40.005922 
19 21.105166 
20 48.665303 
21 24.627794 
22 54.146379 
23 19.634146 
24 43.679167 

sns.barplot(x = avg_weight.index.values, y = "weight", 
      data = avg_weight, palette = sns.palplot(sns.diverging_palette(150, 275, s=80, l=55, n=9))) 
plt.xlabel('Animal id') 
plt.ylabel('Average Weight') 
plt.title('Average Weight by Animal') 

enter image description here

的barplot出现倒挂。

为什么会发生这种情况,我该如何纠正它?

您的建议将不胜感激。

PS:不知何故,这个问题与传递给调色板参数的值有关,因为它在我选择palette = sns.color_palette("coolwarm", 7)时得到解决。不过,我不明白为什么。

+0

正如你不会叫'sns.distplot(X = sns.barplot(X))'左右,你不应该把一个“palplot”变成“barplot”的参数。 – ImportanceOfBeingErnest

回答

3

通过调用sns.palplot,您正在制作另一个图形,导致图形属性设置不正确。删除的,你应该是不错的:

sns.barplot(x = avg_weight.index.values, y = "weight", 
      data = avg_weight, palette = sns.diverging_palette(150, 275, s=80, l=55, n=9)) 
plt.xlabel('Animal id') 
plt.ylabel('Average Weight') 
plt.title('Average Weight by Animal') 

enter image description here