选取的新冠肺炎疫情数据库地址:COVID-19-data: 新冠病毒感染人数统计数据
由于湖北省的感染人数远远高于其他省份,故此处选取了广东省作为其他省份的代表来做动态可视化,否则整个画面的底部的曲线会颜色过于复杂,而且提前利用静态折线图(如图)可以看出,除湖北省外,其他省市区的感染人数较少,感染人数增长趋势是相似的。为了画面的简洁,动态图的制作只采用湖北省和广东省(除湖北省外感染人数最多的省份)的数据。
源代码如下,数据是用csv形式读取的,数据格式如图:
字段意思:time表示时间,price表示当日累计新增人数,quantity表示统计的第几天。
#多个动态折线图 # -*- coding: utf-8 -*- # """ # # """ # import numpy as np import matplotlib matplotlib.use('TkAgg') matplotlib.rc("font", family='Microsoft YaHei')#family是设置的字体 import pandas as pd import matplotlib.pyplot as plt import matplotlib.animation as animation import time if __name__ == '__main__': oneFile = "data1.csv" # 广东省数据 otherFile = "data2.csv" # 湖北省数据 # print(1234567); oneFileData = pd.read_csv(OneFile) otherFileData = pd.read_csv(otherFile) OneFileData.info() # 输出读入的csv数据的基本信息 otherFileData.info() # Fixing random state for reproducibility np.random.seed(196) data = OneFileData.price #读入广东省感染人数 data1 = otherFileData.price #读入湖北省感染人数 xdata = np.arange(0, len(data)) print('xdata(x轴数据)',xdata) print('data(y轴广东省数据)',data) print('data(y轴湖北省数据)',data1) # 初始数据绘图 dis = np.zeros(165) diss = np.zeros(165) dis2 = dis diss2 = diss fig, ax = plt.subplots() line, = ax.plot(dis) lines, = ax.plot(diss) ax.set_ylim(0, 2000) ax.legend(handles=[line,lines],labels=["广东省感染人数","湖北省感染人数"],loc="lower right",fontsize=6) plt.grid(True) ax.set_ylabel("感染人数/人") ax.set_xlabel("统计时间/第X天") ax.set_title("2020年1月20日至2020年7月02日 湖北省和广东省感染新冠肺炎人数趋势图") def update(frame): global dis global dis2 global line # 读入模拟 a = frame time.sleep(np.random.rand() / 10) # 绘图数据生成 dis[0:-1] = dis2[1:] dis[-1] = a dis2 = dis # 绘图 line.set_ydata(dis) # 颜色设置 plt.setp(line, 'linewidth', 2.0) return line def update1(frame1): global diss global diss2 global lines # 读入模拟 b = frame1 time.sleep(np.random.rand() / 10) # 绘图数据生成 diss[0:-1] = diss2[1:] diss[-1] = b diss2 = diss # 绘图 lines.set_ydata(diss) # 颜色设置 plt.setp(line, 'linewidth', 2.0) return lines ani = animation.FuncAnimation(fig, update, frames=data, interval=120) ani1 = animation.FuncAnimation(fig, update1, frames=data1, interval=120) plt.show()最终效果图
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)