python-3.x - 绘制具有多个系列的条形图
问题描述
我目前有三个具有相同键但具有不同值的字典,因为它们用于三个不同的年份。我试图在年份之间进行比较。我想知道如何在同一轴上绘制所有三个图表。我有以下代码
import pandas as pd
dt = {'2018':nnum.values, '2019':nnum2.values, '2020':nnum3.values,}
df1=pd.DataFrame(dt,index=nnum.keys())
df1.plot.bar()
我正在尝试沿着这条线做一些事情,因为每个字典都包含相同的键,但我一直收到错误。无论如何都可以将索引设置为字典的键,而无需手动输入
解决方案
添加()
值,转换dt
为字典中的列表以获取列表字典:
nnum = {1:4,5:3,7:3}
nnum2 = {7:8,9:1,1:0}
nnum3 = {0:7,4:3,8:5}
dt = {'2018': list(nnum.values()), '2019':list(nnum2.values()), '2020':list(nnum3.values())}
df1=pd.DataFrame(dt,index=nnum.keys())
print(df1)
2018 2019 2020
1 4 8 7
5 3 1 3
7 3 0 5
df1.plot.bar()
编辑:如果字典的长度不同并且需要填充新值,0
则可以使用:
nnum = {1:4,5:3,7:3}
nnum2 = {7:8,9:1,1:0}
nnum3 = {0:7,4:3}
from itertools import zip_longest
L = [list(nnum.values()), list(nnum2.values()), list(nnum3.values())]
L = list(zip_longest(*L, fillvalue=0))
df1 = pd.DataFrame(L,index=nnum.keys(), columns=['2018','2019','2020'])
print(df1)
2018 2019 2020
1 4 8 7
5 3 1 3
7 3 0 0
推荐阅读
- python - 为三个项目生成固定值以在而不是 randrange 之间随机播放
- bash - 如何将默认 python 解释器设置为 Anaconda2 路径,而不是 WSL 中的 usr/bin/ 默认值
- python - 如何通过python填充文本区域并选择选项(选择标签)并点击提交(输入标签)?
- jquery - 如何阻止点击事件创建多个元素?
- javascript - 如何在反应中使用leader-line(一个外部javascript库)?
- php - PHP - 对象数组
- mysql - 对多连接表求和
- javascript - ES2015 + flow:自引用(循环?)枚举
- java - 在 API 响应中自定义 JSON 属性
- c# - 是否可以在 Outlook 中将附件作为 URL 发送