我有一本看起来像这样的字典
d = {
'a' : {'L1':2, 'L2':5, 'L3':8},
'b' : {'L1':4, 'L2':7, 'L3':10},
'c' : {'L1':19, 'L2':0, 'L3':1},
}
我想有一个图表,其中x轴包含我的键,每个键有3个条形图,对应L1,L2和L3的值。
总而言之,我的情节将包含按键分组的9个条形图(因此3组3个条形图)。
到目前为止,我能做的是将我的字典转换为数据帧,然后对每个键使用seaborn的条形图,但这会留下3个不同的图。
是否可以有一个包含所有信息的图?
非常感谢。
答案 0 :(得分:6)
你可以使用熊猫,即:
import matplotlib.pyplot as plt
import pandas as pd
d = {
'a': {'L1':2, 'L2':5, 'L3':8},
'b': {'L1':4, 'L2':7, 'L3':10},
'c': {'L1':19, 'L2':0, 'L3':1},
}
pd.DataFrame(d).plot(kind='bar')
plt.show()
输出:
在您的情况下,您需要在x轴上使用dict键,以便使用
pd.DataFrame(d).T.plot(kind='bar')
答案 1 :(得分:0)
对于那些寻找没有 Pandas 的解决方案的人,seaborn 还可以绘制字典。您只需要重新排列字典:
import seaborn as sb
d = {
'x': ['L1', 'L1', 'L1', 'L2', 'L2', 'L2', 'L3', 'L3', 'L3'],
'y': [ 2, 4, 19, 5, 7, 0, 8, 10, 1],
'group':[ 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
}
sb.barplot(x='x', y='y', hue="group", data=d)
请注意,barplot
会自动将 x
和 group
字段分组。例如,将 L3
替换为 L2
,
d = {
'x': ['L1', 'L1', 'L1', 'L2', 'L2', 'L2', 'L2', 'L2', 'L2'],
'y': [ 2, 4, 19, 5, 7, 0, 8, 10, 1],
'group':[ 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
}
我们得到: