如何在matplotlib中制作分组的箱线图

发布于 2021-01-29 15:25:21

我有三种算法,A,B和C。我已在不同的数据集上运行它们,并希望将它们的运行时绘制为Python中的分组箱图。

作为我想要的视觉示例,我制作了一张糟糕的图纸,但希望它能指出要点。

箱线图图形绘制

如果我在python中的数据如下所示:

import numpy as np
import random

data = {}
data['dataset1'] = {}
data['dataset2'] = {}
data['dataset3'] = {}

n = 5
for k,v in data.iteritems():
    upper = random.randint(0, 1000)
    v['A'] = np.random.uniform(0, upper, size=n)
    v['B'] = np.random.uniform(0, upper, size=n)
    v['C'] = np.random.uniform(0, upper, size=n)

如何使我的情节看起来像我画的照片?

关注者
0
被浏览
214
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用独立的子图最容易做到这一点:

    import matplotlib.pyplot as plt
    import numpy as np
    import random
    
    data = {}
    data['dataset1'] = {}
    data['dataset2'] = {}
    data['dataset3'] = {}
    
    n = 500
    for k,v in data.iteritems():
        upper = random.randint(0, 1000)
        v['A'] = np.random.uniform(0, upper, size=n)
        v['B'] = np.random.uniform(0, upper, size=n)
        v['C'] = np.random.uniform(0, upper, size=n)
    
    fig, axes = plt.subplots(ncols=3, sharey=True)
    fig.subplots_adjust(wspace=0)
    
    for ax, name in zip(axes, ['dataset1', 'dataset2', 'dataset3']):
        ax.boxplot([data[name][item] for item in ['A', 'B', 'C']])
        ax.set(xticklabels=['A', 'B', 'C'], xlabel=name)
        ax.margins(0.05) # Optional
    
    plt.show()
    

    在此处输入图片说明



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看