Python大作业进阶(三)
初级动态图
只是启用了 plt 的交互绘图功能,代码几乎没变,读者注意看细节吧
加分:2分?(不能再多了,就多了三行)
import matplotlib.pyplot as plt
import csv
plt.rcParams['font.sans-serif']=['SimHei'] # 将plt的汉语设置为黑体
# 开启交互式绘图
plt.ion()
f = open('Province_GDP.csv', 'r',encoding='utf-8')
csvreader = csv.reader(f)
final_list = list(csvreader)
# 将表格中的每个数据的格式改为float类型(之前的为str)
del(final_list[0])
final_ = []
for i in range(len(final_list)):
fin = list(map(lambda x :float(x),final_list[i][1:]))
fin.insert(0,final_list[i][0])
final_.append(fin)
# 将数据以2018年数据排序
final_ = sorted(final_,key=lambda x:x[1],reverse=True)
#print(final_)
days = list(range(2010,2019))
sub_plots = [221,222,223,224]
for j in range(4):
plt.suptitle('全国各省2010-2018年GDP变化折线图(x:年,y:亿元)\n根据各省2018年GDP排序')
plt.subplot(sub_plots[j])
if j != 3:
for i in range(8*j,8+8*j):
shuju =(final_[i][1:])[::-1]
plt.plot(days, shuju,'.-',label = final_[i][0])
plt.legend(loc=2) #将图例放在左上角
plt.pause(1)
else :
for i in range(8*j,8+8*j-1):
shuju =(final_[i][1:])[::-1]
plt.plot(days, shuju,'.-',label = final_list[i][0])
plt.legend(loc=2)
plt.pause(1)
plt.show()
缺点:这样子画图只是一条线一条线画,无法展现出每个省的每年的具体变化,若想改进,应以时间为变化将每个省每年的变化绘制出来