改正错误:import xlrd import numpy as np import matplotlib.pyplot as plt wb = xlrd.open_workbook("年度新生人口和死亡人口.xls") sheet = wb.sheet_by_index(0) col_0 = sheet.col_values(0)[1:] col_1 = sheet.col_values(1)[1:] col_2 = sheet.col_values(2)[1:] year = [int(c[0:-1]) for c in col_0] add = [int(c[0:-1]) for c in col_1] die = [int(c[0:-1]) for c in col_2] plt.rcParams['font.sans-serif'] = 'SimHei' plt.rcParams['axes.unicode_minus'] = False plt.title('年度新生人口和死亡人口', fontsize=12) plt.xlabel('单位(年)', fontsize=12) plt.ylabel('单位(万)', fontsize=12) fig, plt = plt.subplots(figsize=(8, 4), dpi=80, facecolor=(0.92, 0.92, 0.96)) plt.set_xlim([1940, 2020]) plt.set_ylim([500, 3000]) plt.set_xticks(np.arange(1940, 2020, 10)) plt.set_yticks(np.arange(500, 3000, 500)) plt.plot(year, add, marker=',', linestyle='-', linewidth=1.2) plt.plot(year, die, color='m', marker=',', linestyle='-', linewidth=1.2) plt.legend(['新生人口', '死亡人口'], fontsize=12) plt.show()
时间: 2024-04-27 10:22:30 浏览: 173
import xlrd
import numpy as np
import matplotlib.pyplot as plt
wb = xlrd.open_workbook("年度新生人口和死亡人口.xls")
sheet = wb.sheet_by_index(0)
col_0 = sheet.col_values(0)[1:]
col_1 = sheet.col_values(1)[1:]
col_2 = sheet.col_values(2)[1:]
year = [int(c) for c in col_0]
add = [int(c) for c in col_1]
die = [int(c) for c in col_2]
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
plt.title('年度新生人口和死亡人口', fontsize=12)
plt.xlabel('单位(年)', fontsize=12)
plt.ylabel('单位(万)', fontsize=12)
fig, ax = plt.subplots(figsize=(8, 4), dpi=80, facecolor=(0.92, 0.92, 0.96))
ax.set_xlim([1940, 2020])
ax.set_ylim([500, 3000])
ax.set_xticks(np.arange(1940, 2020, 10))
ax.set_yticks(np.arange(500, 3000, 500))
ax.plot(year, add, marker=',', linestyle='-', linewidth=1.2)
ax.plot(year, die, color='m', marker=',', linestyle='-', linewidth=1.2)
plt.legend(['新生人口', '死亡人口'], fontsize=12)
plt.show()
主要修改的地方有:
1. 将年份、新生人口和死亡人口的字符串转化为整数时,将“[1:-1]”去掉,因为字符串的格式是“xxxx年”、“xxxx.x万”,不需要去掉最后一个字符。
2. 在创建子图时,将“plt”改为“ax”,因为“plt”在前面已经被赋值为“matplotlib.pyplot”,而子图的对象是“matplotlib.axes.Axes”,应该使用“ax”代替“plt”。
阅读全文