Albertdjy 发表于 2020-7-13 17:17:09

matplotlib中堆叠柱状图报错

报错:ValueError: shape mismatch: objects cannot be broadcast to a single shape
去掉最后一幅图:plt.bar(x = data_1.keys(),height=data_list,color='yellow',label='第三产业',tick_label=['第一季度','第二季度','第三季度'],bottom = data_list + data_list)
倒是可以正常显示,堆叠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 = {'第一产业':,'第二产业':,'第三产业':}#列表[]中每个元素代表1个季度,共3季度
print(list(data_1.values()))
data_list = list(data_1.values())


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

plt.bar(x = data_1.keys(),height=data_list,color='red',label='第二产业',tick_label=['第一季度','第二季度','第三季度'],bottom = data_list)
#bottom,画在第一幅图上面
plt.bar(x = data_1.keys(),height=data_list,color='yellow',label='第三产业',tick_label=['第一季度','第二季度','第三季度'],bottom = data_list + data_list)
#bottom,画在第一,第二幅图上面
plt.title('2017年季度产值')
plt.ylabel('产值(亿)',fontsize=12)
plt.show()

Twilight6 发表于 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 = {'第一产业':,'第二产业':,'第三产业':}#列表[]中每个元素代表1个季度,共3季度

data_list = list(data_1.values())


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

plt.bar(x = data_1.keys(),height=data_list,color='red',label='第二产业',tick_label=['第一季度','第二季度','第三季度'],bottom = data_list)
#bottom,画在第一幅图上面
plt.bar(x = data_1.keys(),height=data_list,color='yellow',label='第三产业',tick_label=['第一季度','第二季度','第三季度'],bottom = data_list + data_list)
#bottom,画在第一,第二幅图上面
plt.title('2017年季度产值')
plt.ylabel('产值(亿)',fontsize=12)
plt.show()

Albertdjy 发表于 2020-7-13 17:40:28

Twilight6 发表于 2020-7-13 17:21
这样的?错误在 bottom 参数那 ,你是传入了列表 而不是值

不是这样,图有点奇怪,不过我明白了,谢谢你
页: [1]
查看完整版本: matplotlib中堆叠柱状图报错