Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自不同长度字典的箱线图_Python - Fatal编程技术网

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()