如何在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 个回答
-
使用独立的子图最容易做到这一点:
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()