Matplotlib - 来自Dict的Clustered条形图,每个键有多个值

时间:2017-08-05 18:26:52

标签: python matplotlib

鉴于dict.items()看起来像这样:

('a', [11, 10])
('b', [10, 11])
('c', [7, 6])
('d', [5, 5])
('e', [21])

首先,如何将第二个值附加到'e',以使长度与其他值匹配?

其次,忽略e的长度问题,我怎么能用标签的键做一个值的聚类条形图。

似乎我想将值分解为列表并绘制

ax.bar(len(d.keys()), list1, width='0.5', color='r')
ax.bar(len(d.keys()), list2, width='0.5', color='r')

我以前从来没有用每个键绘制多个值的dict,我似乎无法弄明白。

2 个答案:

答案 0 :(得分:0)

您可以使用

new_value追加到d['e']
d['e'].append(new_value)

考虑时的逻辑。可以使用

获取单个值列表
list1 = [x[0] for x in d.values()]
list2 = [x[1] for x in d.values()]

答案 1 :(得分:0)

以下是使用Pandas的一种方法:

import pandas as pd
data = dict([('a', [11, 10]), ('b', [10, 11]),
             ('c', [7, 6]), ('d', [5, 5]),
             ('e', [21])])

holdenweb的回答有助于附加词典:

# add to e
new_value = 22
data['e'].append(new_value)

现在转换为Pandas数据框和plot()

# convert to data frame 
# .T transposes letter categories to the x-axis
df = pd.DataFrame(data).T

# plot grouped bar chart
df.plot(kind="bar")

bar plot