使用seaborn的分类绘图会引发ValueError:不支持对象数组

时间:2018-09-11 20:50:07

标签: python pandas seaborn

这是我正在使用的Pandas DataFrame的一部分:

all_samples = pd.DataFrame({'Group': {0: 'One', 3: 'One', 4: 'One', 5: 'One', 7: 'One'},
 'Sample': {0: 1, 3: 1, 4: 2, 5: 2, 7: 2},
 'VAF': {0: 0.0009577524741938917,
  3: 0.0006907269901571404,
  4: 0.001246660730186999,
  5: 0.00128,
  7: 0.0012338062924120913}})

如果我尝试将数据绘制为散点图,则一切正常:

sns.catplot(x="Group", y="VAF", hue="Sample", dodge=True,
            palette="pastel", data=all_samples.head(20));

但是当我尝试将数据绘制为小提琴或像这样的箱形图时:

sns.catplot(x="Group", y="VAF", hue="Sample", kind='violin',
            palette="pastel", data=all_samples.head(20));

我收到一个ValueError: object arrays are not supported错误。我的DataFrame结构不好吗?

更新:

因为它对其他人有用,所以我尝试了我发布的示例,并且对我有用。然后,当我使用完整的DataFrame时;我将其转换为字典,然后转换为DataFrame,现在可以正常使用了。 temp = pd.DataFrame(all_samples.to_dict()),然后像这样绘制:sns.violinplot(x='Group', y='VAF', hue='Sample', palette='pastel', data=temp)。不幸的是,我现在不知道如何发布原始数据来了解出了什么问题。这对任何人有意义吗?

1 个答案:

答案 0 :(得分:1)

这对我来说适用于seaborn 0.9版,但是,就我而言,该图被裁剪掉了。

如果要绘制小提琴图,可以直接调用violinplot函数:

sns.violinplot(x='Group', y='VAF', hue='Sample', palette='pastel', data=all_samples);
plt.show()

enter image description here