我试图用matplotlib绘制一个dict,就像这样(只是更多的数据):
b = {"A": ['26', '44', '10', '22', '26'], "B": ['39', '24'], 'C': ['22', '23'], 'D': ['21', '12']}
我想为dict中的每个键制作一个boxplot / violinplot,(比添加mean,std。偏差等),如:
但像Plotting a dictionary with multiple values per key这样的帖子对我不起作用,因为我的键是字母(编码氨基酸)。
我觉得我不会在房间里看到大象。
答案 0 :(得分:2)
您需要以列表列表的形式提供数据,并确保数据是数字而不是字符串。然后,您可以使用boxplot
或violinplot
命令绘制它们。
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()