1

我想在一张图中创建 10 个小提琴图。我看了很多这样的例子:Violin plot matplotlib,什么显示了我最后想要的。

但我不知道如何使其适应真实的数据集。它们都只是生成一些正态分布的随机数据。我有 D[10,730] 表格中的数据,如果我尝试从上面的链接中调整它:例如:

axes[0].violinplot(all_data,showmeans=False,showmedians=True)

我的代码:

axes[0].violinplot(D,showmeans=False,showmedians=True)

它不起作用。它应该并行打印 10 个小提琴图(的第一维D)。

那么我的数据如何才能获得相同类型的小提琴图呢?

4

1 回答 1

1

你只需要转置你的数据数组D

axes[0].violinplot(D.T,showmeans=False,showmedians=True)

这似乎是 matplotlib 中的一个小错误。对于一维数组和二维数组的列表,轴的处理方式不一致。

import numpy as np
import matplotlib.pyplot as plt

n_datasets = 10
n_samples = 730
data = np.random.randn(n_datasets,n_samples)

fig, axes = plt.subplots(1,3)

# http://matplotlib.org/examples/statistics/boxplot_vs_violin_demo.html
axes[0].violinplot([d for d in data])

# should be equivalent to:
axes[1].violinplot(data)

# is actually equivalent to
axes[2].violinplot(data.T)

在此处输入图像描述

您应该提交错误报告。

于 2017-04-05T12:29:46.193 回答