我想创建一个箱线图列表,箱子的颜色取决于我用作输入的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
(单一颜色)。 - mwaskom