查看boxplot API page,我想要一些看起来像这样的东西:
>>> iris = sns.load_dataset("iris")
>>> ax = sns.boxplot(data=iris, orient="h", palette="Set2")
除非我希望它由包含特定标签的列拆分,与下面示例中的hue
参数所实现的类似:
ax = sns.boxplot(x="day", y="total_bill", hue="smoker", data=tips, palette="Set3")
此示例仅在定义x
和y
时有效,但对于我想要实现的目标,我希望x
基本上是数据框中的每一列(标签除外) )和y
是频率,类似于第一个例子中显示的频率。如果用seaborn无法实现,我愿意为python尝试一些其他的可视化库。
答案 0 :(得分:1)
你需要"卸下"或者"融化"数据一切都是值,而不是变量(长格式而不是宽格式)。
以下是这样的:
iris_xtab = seaborn.load_dataset("iris")
iris_long = pandas.melt(iris, id_vars='species')
seaborn.boxplot(x='species', y='value', hue='variable', data=iris_long)
或者将物种值遗漏为x(您必须按照之前的建议分配一个虚拟值
ax = seaborn.boxplot(x='pos', y='value', hue='variable',
data=iris_long.assign(pos=1))