Python matplotlib用多个值绘制dict

时间:2017-05-18 10:07:40

标签: python python-2.7 dictionary matplotlib

我试图用matplotlib绘制一个dict,就像这样(只是更多的数据):

b = {"A": ['26', '44', '10', '22', '26'], "B": ['39', '24'], 'C': ['22', '23'], 'D': ['21', '12']}

我想为dict中的每个键制作一个boxplot / violinplot,(比添加mean,std。偏差等),如: enter image description here

但像Plotting a dictionary with multiple values per key这样的帖子对我不起作用,因为我的键是字母(编码氨基酸)。

我觉得我不会在房间里看到大象。

1 个答案:

答案 0 :(得分:2)

您需要以列表列表的形式提供数据,并确保数据是数字而不是字符串。然后,您可以使用boxplotviolinplot命令绘制它们。

import matplotlib.pyplot as plt

b = {"A": ['26', '44', '10', '22', '26'], "B": ['39', '24'], 
     'C': ['22', '23'], 'D': ['21', '12']}

index= []
data = []
for i, (key, val) in enumerate(b.iteritems()):
    index.append(key)
    data.append(map(float, val))

fig, (ax, ax2) = plt.subplots(ncols=2)
ax.boxplot(data)
ax.set_xticklabels(index)
ax2.violinplot(data)
ax2.set_xticks(range(1,len(index)+1))
ax2.set_xticklabels(index) 

plt.show()

enter image description here