Python 来自不同长度字典的箱线图
我有一个字典,每个键有不同长度的值。试图以Python 来自不同长度字典的箱线图,python,Python,我有一个字典,每个键有不同长度的值。试图以箱线图打印,我无法继续。还有其他方法吗 我写了这篇文章,但它不起作用: 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,
箱线图打印,我无法继续。还有其他方法吗
我写了这篇文章,但它不起作用:
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()
提出并测试的解决方案:只需将解释替换为以下文本。它与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()
您想将所有值放在一起吗?
[dict1中的n代表v.values()代表v中的n]
将值列表“展平”
那么箱线图就是matplotlib标准图
还是用钥匙
# Python 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()
通过按键。问题是我不能使用熊猫,也没有找到最好的解决方案;太好了标签,数据=[*zip(*dict1.items())]#将项目“转置”到并行键,值列表^SyntaxError:invalid syntax”在处理后显示。你有什么想法吗?重新启动Spyder,从我的答案中剪切粘贴,效果很好,Python 3.6.3可能是Python版本更改为解包和dict.items()
标签,data=dict1.keys(),dict1.values()
似乎可以在在线2.7解释器中收集列表-没有检查图形
# Python 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()