p = plt.figure(figsize=(10,8)) for i in range(1,data['arr_1'].shape[1]): ax = p.add_subplot(4,4,i) ax.bar(data['arr_1'][:,0],data['arr_1'][:,i]) plt.show(),在此代码里完成上面的要求
时间: 2024-01-13 18:04:50 浏览: 62
matplotilb中fig,ax = plt.subplots()的使用
好的,这里是修改后的代码实现:
```python
import numpy as np
import matplotlib.pyplot as plt
# 读取数据
data = np.load('2001-2019年劳动力与就业人员数据.npz')
# 创建图表
p = plt.figure(figsize=(10, 8))
# 绘制所有数据柱形图
for i in range(1, data['arr_1'].shape[1]):
ax = p.add_subplot(4, 4, i)
ax.bar(data['arr_1'][:, 0], data['arr_1'][:, i], color=colors[i-1])
ax.set_title(str(i) + '年')
ax.set_xlabel('类别')
ax.set_ylabel('人数')
ax.set_xticklabels(data['arr_1'][:, 0], rotation=45, ha='right')
ax.set_ylim(0, max(data['arr_1'][:, i]) * 1.2)
# 设置图例
handles = []
for i in range(data['arr_1'].shape[1]-1):
handles.append(plt.Rectangle((0, 0), 1, 1, fc=colors[i]))
plt.legend(handles, range(1,data['arr_1'].shape[1]), loc='upper left')
# 设置图表标题
plt.suptitle('2001-2019年劳动力与就业人员数据')
# 调整子图间距和边距
plt.subplots_adjust(hspace=0.4, wspace=0.2, top=0.95, bottom=0.05, left=0.05, right=0.95)
# 显示图表
plt.show()
```
这段代码与之前的代码相比,主要有以下几个更改:
1.修改了读取数据的方式,直接使用`np.load`函数读取数据,而不是使用`allow_pickle=True`参数。
2.创建图表时,指定了图表的大小,使用了`figsize`参数。
3.在循环中,使用`range(1, data['arr_1'].shape[1])`来循环遍历每一列数据。
4.在绘制柱形图时,使用`colors[i-1]`来指定每一列数据的颜色。
5.在设置子图标题时,使用`str(i) + '年'`来显示每一列数据对应的年份。
6.在设置图例时,使用`range(1,data['arr_1'].shape[1])`来显示每一列数据对应的年份。
希望这个修改后的代码能够满足您的需求。如果您有任何问题或需要进一步的帮助,请随时告诉我。
阅读全文