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],}并用条形图中相应的百分比按键绘制