Python 在一个条形图中绘制词典词典

Python 在一个条形图中绘制词典词典,python,dictionary,matplotlib,plot,bar-chart,Python,Dictionary,Matplotlib,Plot,Bar Chart,我有一本像这样的字典 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的条形图,但这就给我的字典留

我有一本像这样的字典

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个不同的图

有可能有一个包含所有信息的绘图吗


非常感谢。

您可以使用熊猫,即:

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

对于那些寻找没有熊猫的解决方案的人来说,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']
}
我们得到:


您是否尝试过:
df=pd.DataFrame(d);图(子图=真,种类=条形);plt.show()
?@cᴏʟᴅsᴘᴇᴇᴅ 我认为没有必要这样做subplots@Bharath是的,我看到了你的答案。。。我想不是:-0我需要x轴上的键,而不是L1、L2和L3,但我接受了您的代码并添加了一个dataframe.transpose(),得到了我想要的:)谢谢!哦,我错过了那部分。是的,我们可以转置。@MhamedJabri如果答案有帮助,别忘了投票并接受答案。任何关于绘制不包含“L1”:“L2”:“L2”:”的类似词典的建议。。。名字?我正在寻找这样一个字典的解决方案:d={'a':[2,5,8],'b':[4,7,10],'c':[19,0,1],}并用条形图中相应的百分比按键绘制