我有一本字典,每个键的值长度不同。试图以a表示boxplot,我无法前进。还有其他方法吗?
我写了这个,但是不起作用:
import matplotlib.pyplot as plt
import matplotlib as mpl
dict1 = {'Pb': [53.0, 56.0, 56.0, 57.0, 57.0, 57.0, 46.0], 'Pa': [56.0, 55.0], 'Pg': [57.0, 57.0, 58.0, 57.0, 57.0, 57.0, 57.0, 57.0,53.0, 57.0, 55.0, 58.0, 58.0, 58.0, 57.0, 57.0, 57.0, 57.0, 57.0, 55.0, 55.0, 57.0, 57.0, 55.0, 58.0, 58.0, 58.0, 55.0, 58.0, 54.0, 58.0, 57.0, 57.0, 58.0, 55.0, 56.0, 55.0, 55.0, 55.0, 58.0, 56.0, 57.0, 57.0, 57.0, 57.0, 56.0, 57.0, 56.0],'Pf': [54.0], 'Pn': [56.0, 56.0, 55.0, 56.0, 56.0, 56.0], 'Ps': [58.0, 56.0, 57.0, 56.0, 56.0, 55.0, 56.0, 56.0, 56.0, 55.0, 56.0, 56.0, 56.0, 58.0, 57.0, 58.0, 57.0, 57.0, 56.0, 58.0, 56.0, 53.0, 56.0, 56.0, 56.0, 56.0, 56.0, 56.0]}
# remove from here
for k, v in dict1.iteritems():
boxplot(k,v)
plt.show()
Run Code Online (Sandbox Code Playgroud)
提出并测试了该解决方案:只需将解释替换为以下文本。它适用于python 3.5
#And include this:
labels, data = [*zip(*dict1.items())] # 'transpose' items to parallel key, value lists
plt.boxplot(data)
plt.xticks(range(1, len(labels) + 1), labels)
plt.show()
Run Code Online (Sandbox Code Playgroud)
您是否希望所有值都在一起?
[n for v in dict1.values() for n in v]“拉平”值列表
那么箱形图就是matplotlib标准图https://matplotlib.org/examples/pylab_examples/boxplot_demo.html
from matplotlib import pyplot as plt
plt.boxplot([n for v in dict1.values() for n in v])
Run Code Online (Sandbox Code Playgroud)
或按键
# Pythopn 3.5+
labels, data = [*zip(*dict1.items())] # 'transpose' items to parallel key, value lists
# or backwards compatable
labels, data = dict1.keys(), dict1.values()
plt.boxplot(data)
plt.xticks(range(1, len(labels) + 1), labels)
plt.show()
Run Code Online (Sandbox Code Playgroud)