鱼C论坛

 找回密码
 立即注册
查看: 1804|回复: 2

[已解决]matplotlib中堆叠柱状图报错

[复制链接]
发表于 2020-7-13 17:17:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
报错:ValueError: shape mismatch: objects cannot be broadcast to a single shape
去掉最后一幅图:plt.bar(x = data_1.keys(),height=data_list[2],color='yellow',label='第三产业',tick_label=['第一季度','第二季度','第三季度'],bottom = data_list[0] + data_list[1])
倒是可以正常显示,堆叠3个就出错了,我哪里写错了求指出
import numpy
import os,pandas#用于导入数据
import matplotlib.pyplot as plt


plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#堆叠柱状图

data_1 = {'第一产业':[8650,13333,19246],'第二产业':[10000,10120,10600],'第三产业':[70000,80000,88000]}#列表[]中每个元素代表1个季度,共3季度
print(list(data_1.values()))
data_list = list(data_1.values())


plt.bar(x = data_1.keys(),height=data_list[0],color='blue',label='第一产业',tick_label=['第一季度','第二季度','第三季度'])

plt.bar(x = data_1.keys(),height=data_list[1],color='red',label='第二产业',tick_label=['第一季度','第二季度','第三季度'],bottom = data_list[0])
#bottom,画在第一幅图上面
plt.bar(x = data_1.keys(),height=data_list[2],color='yellow',label='第三产业',tick_label=['第一季度','第二季度','第三季度'],bottom = data_list[0] + data_list[1])
#bottom,画在第一,第二幅图上面
plt.title('2017年季度产值')
plt.ylabel('产值(亿)',fontsize=12)
plt.show()
最佳答案
2020-7-13 17:21:27


这样的?错误在 bottom 参数那 ,你是传入了列表 而不是值
import numpy
import os,pandas#用于导入数据
import matplotlib.pyplot as plt


plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#堆叠柱状图

data_1 = {'第一产业':[8650,13333,19246],'第二产业':[10000,10120,10600],'第三产业':[70000,80000,88000]}#列表[]中每个元素代表1个季度,共3季度

data_list = list(data_1.values())


plt.bar(x = data_1.keys(),height=data_list[0],color='blue',label='第一产业',tick_label=['第一季度','第二季度','第三季度'])

plt.bar(x = data_1.keys(),height=data_list[1],color='red',label='第二产业',tick_label=['第一季度','第二季度','第三季度'],bottom = data_list[1][0])
#bottom,画在第一幅图上面
plt.bar(x = data_1.keys(),height=data_list[2],color='yellow',label='第三产业',tick_label=['第一季度','第二季度','第三季度'],bottom = data_list[2][0] + data_list[2][1])
#bottom,画在第一,第二幅图上面
plt.title('2017年季度产值')
plt.ylabel('产值(亿)',fontsize=12)
plt.show()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-13 17:21:27 | 显示全部楼层    本楼为最佳答案   


这样的?错误在 bottom 参数那 ,你是传入了列表 而不是值
import numpy
import os,pandas#用于导入数据
import matplotlib.pyplot as plt


plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

#堆叠柱状图

data_1 = {'第一产业':[8650,13333,19246],'第二产业':[10000,10120,10600],'第三产业':[70000,80000,88000]}#列表[]中每个元素代表1个季度,共3季度

data_list = list(data_1.values())


plt.bar(x = data_1.keys(),height=data_list[0],color='blue',label='第一产业',tick_label=['第一季度','第二季度','第三季度'])

plt.bar(x = data_1.keys(),height=data_list[1],color='red',label='第二产业',tick_label=['第一季度','第二季度','第三季度'],bottom = data_list[1][0])
#bottom,画在第一幅图上面
plt.bar(x = data_1.keys(),height=data_list[2],color='yellow',label='第三产业',tick_label=['第一季度','第二季度','第三季度'],bottom = data_list[2][0] + data_list[2][1])
#bottom,画在第一,第二幅图上面
plt.title('2017年季度产值')
plt.ylabel('产值(亿)',fontsize=12)
plt.show()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-13 17:40:28 | 显示全部楼层
Twilight6 发表于 2020-7-13 17:21
这样的?错误在 bottom 参数那 ,你是传入了列表 而不是值

不是这样,图有点奇怪,不过我明白了,谢谢你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 01:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表