【发布时间】:2016-02-06 07:24:09
【问题描述】:
我想创建一个箱线图列表,箱线图的颜色取决于我用作输入的 pandas.DataFrame 列的名称。
列名包含指示实验条件的字符串,我希望箱线图的框根据该实验条件着色。
我这样做是为了制作箱线图:
sns.boxplot(data = data.dropna(), orient="h")
plt.show()
这将创建一个漂亮的箱线图列表,其中包含正确的名称。现在,我想将名称中包含“prog +, DMSO+”的每个箱线图设置为红色,其余部分为蓝色。
我尝试创建一个以列名作为键、颜色作为值的字典:
color = {}
for column in data.columns:
if 'prog+, DMSO+' in column:
color[column] = 'red'
else:
color[column] = 'blue'
然后使用字典作为颜色:
sns.boxplot(data = data.dropna(), orient="h", color=color[column])
plt.show()
这不起作用,这是可以理解的(没有循环遍历字典)。所以我做了一个循环:
for column in data.columns:
sns.boxplot(data = data[column], orient='h', color=color[column])
plt.show()
这确实制作了不同颜色的箱线图,但都在彼此之上,并且没有正确的标签。如果我能以某种方式将这些箱线图很好地放在彼此下方的一个图中,我几乎就是我想要的。还是有更好的办法?
【问题讨论】:
-
您必须将字典传递给
palette(多种颜色),而不是color(一种颜色)。
标签: python python-3.x pandas matplotlib seaborn