【问题标题】:Categorical plotting with seaborn raises ValueError: object arrays are not supported使用 seaborn 进行分类绘图会引发 ValueError:不支持对象数组
【发布时间】:2019-02-16 10:29:41
【问题描述】:

这是我正在使用的 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)。不幸的是,我现在不知道如何发布我的原始数据以了解出了什么问题。这对任何人都有意义吗?

【问题讨论】:

  • 我没有收到错误我正在使用sns.__version__ == '0.9.0'
  • 关于数据的调试,您可以尝试数据的不同子集,看看这是否会有所改变。如果只是某些数据行导致错误,您可以隔离一个足够小的子集以在问题中提供。

标签: python pandas seaborn


【解决方案1】:

这适用于seaborn 0.9 版,但是,在我的情况下,图表被裁剪掉了。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-21
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 2018-08-09
    相关资源
    最近更新 更多