【问题标题】:Python: create multiple boxplots in one pannelPython:在一个面板中创建多个箱线图
【发布时间】:2014-11-07 23:56:58
【问题描述】:

我已经使用 R 很长时间了,最​​近正在学习 Python。 我想在 Python 的一个面板中创建多个箱形图。 我的数据集是矢量形式,标签矢量指示每个数据元素对应的箱线图。示例如下所示:

 N = 50
 data = np.random.lognormal(size=N, mean=1.5, sigma=1.75)
 label = np.repeat([1,2,3,4,5],N/5)

从各种网站(例如,matplotlib: Group boxplots),创建多个箱线图需要一个矩阵对象输入,其列包含一个箱线图的样本。于是我根据数据和标签创建了一个列表对象:

 savelist = data[ label == 1]
 for i in [2,3,4,5]:
      savelist = [savelist, data[ label == i]]

但是,下面的代码给了我一个错误:

 boxplot(savelist)

 Traceback (most recent call last):

 File "<ipython-input-222-1a55d04981c4>", line 1, in <module>
 boxplot(savelist)

 File "/Users/yumik091186/anaconda/lib/python2.7/site-packages/matplotlib/pyplot.py", line 2636, in boxplot
meanprops=meanprops, manage_xticks=manage_xticks)

 File "/Users/yumik091186/anaconda/lib/python2.7/site-packages/matplotlib/axes/_axes.py", line 3045, in boxplot labels=labels)

 File "/Users/yumik091186/anaconda/lib/python2.7/site-packages/matplotlib/cbook.py", line 1962, in boxplot_stats
stats['mean'] = np.mean(x)

 File "/Users/yumik091186/anaconda/lib/python2.7/site-packages/numpy/core/fromnumeric.py", line 2727, in mean
out=out, keepdims=keepdims)

 File "/Users/yumik091186/anaconda/lib/python2.7/site-packages/numpy/core/_methods.py", line 66, in _mean
ret = umr_sum(arr, axis, dtype, out, keepdims)

ValueError: operands could not be broadcast together with shapes (2,) (10,) 

谁能解释这是怎么回事?

【问题讨论】:

    标签: python matplotlib boxplot


    【解决方案1】:

    您最终会得到一个嵌套列表而不是平面列表。试试这个:

    savelist = [data[label == 1]]
    for i in [2,3,4,5]:
        savelist.append(data[label == i])
    

    它应该可以工作。

    【讨论】:

      猜你喜欢
      • 2019-02-27
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 2020-09-10
      • 2014-02-26
      相关资源
      最近更新 更多