Advertisement

新冠疫情可视化(7月11日,7月12日)

阅读量:

**

各省疫情数据分析

**

1.黑龙江与香港疫情分析
2.湖南与湖北疫情分析
3.安徽与上海疫情分析

一.黑龙江与香港

1. 绘制两个省份累计确诊人数随时间变化折线图,结合当地政策进行分析(附录一)
制作简述:
导入python模块中的pandas模块,matplotlib.dates模块与matplotlib.pyplot模块
先运用pandas模块与数据所在的excel建起联系,进行有一定条件的数据筛选与调用,之后利用matplotlib型模块对于所采用的数据进行绘制展现。

在这里插入图片描述

从图表中可以看出,在三月中旬之前阶段(即三月中旬及后期),香港地区的疫情尚未大规模爆发。与黑龙江相比而言(即黑龙江的确诊病例数量高于香港),其疫情发展轨迹存在显著差异:主要原因是二月中旬及后期正值春运高峰期(即二月中旬和后期处于春运时期),各地返回港台地区的人口流动显著增加(即各省返乡人流量较大),这使得病毒传播速率较快(即导致病毒传播速度较快)。然而,在我国政府采取了一系列严格的防疫措施后(即而我国各地政府迅速采取了一系列严格的防疫措施),3月、4月期间疫情得到了有效控制(即相比香港而言)。值得注意的是,在2019年11月开始持续长达四个月的时间内(即自2019年11月以来持续长达四个月的时间内),由于黑河市等边境城市人口流动相对较少(即黑河市等边境城市人口流动相对较少),因此3月中旬之前阶段(即三月中旬之前阶段)香港地区的疫情尚未开始大规模爆发阶段。
然而,在4月中旬前后阶段(即4月初时位于中国边疆地区的黑龙江),由于其地理位置优势使其成为边境地区的一部分(即由于靠近中国的边疆),该地区也出现了短暂爆发现象;但由于黑河市等边境城市实施了严格有效的防疫措施并得到了广泛执行(即由于黑河市等边境城市实施了严格有效的防疫措施并得到了广泛执行),因此目前该地区已经实现了确诊病例数量趋于平稳的目标状态;无需担心再次出现病例上升趋势。

制作简述:
导入Python标准库中的pandas库、matplotlib.dates子库以及matplotlib.pytplotlib主库。
随后通过pandas库将本地Excel文件与其建立关联。
对符合条件的数据进行筛选并调用。

在这里插入图片描述

分析:
从图表中可以看出,在2月份时黑龙江地区的新冠肺炎确诊病例持续攀升,在经历了短暂的增长后逐渐趋于稳定状态。这一现象的主要原因是正值中国疫情爆发初期阶段时值正值中国疫情爆发初期阶段时值正值中国疫情爆发初期阶段时值正值中国疫情爆发初期阶段时值正值中国疫情爆发初期阶段时值正值中国疫情爆发初期阶段时值正值中国疫情爆发初期阶段时值正值中国疫情爆发初期阶段时值正值中国疫情爆发初期阶段时值正值中国疫情爆发初期阶段
值得注意的是,在经过了一个较为短暂的增长期之后黑龙江地区的新冠肺炎确诊病例已经达到了相对稳定的水平。然而在6月份后期出现了人员死亡情况的同时应当指出的是其总死亡人数低于香港地区。
总体而言The overall assessment is that the cumulative fatality toll in Hong Kong was lower than that experienced by Heilongjiang throughout the entire period.

3. 生成包含两个省份治愈率、死亡率及确诊占比的饼状图表(附录三)
制作流程:首先需对预存于Excel表格中的数据进行预处理工作。随后通过计算方法确定出南美洲地区的治愈总数、死亡总数以及现有确诊病例数等关键指标参数。接着设定绘图窗口尺寸并配置各区域颜色方案;同时将百分比数值保留两位小数并为图表设定表头名称为"南美洲";最后确保X轴与Y轴的比例相同以使饼图呈现圆形形状;最后通过t.set_size方法调节字体大小参数并利用matplotlib中的subplots函数将所有图表整合到同一个页面中展示;通过plot函数生成各个子图并完成展示。

在这里插入图片描述

分析:通过观察图表可以看出,在确诊病例方面相对较少的是黑龙江地区(约占总确诊病例的一半),而其治愈率却略高于香港地区(达到49.31%)。与之相比的是香港的确诊病例数量约占总确诊病例的大约52.16%,其治愈率则达到了47.55%,而死亡病例仅约为0.29%;相比之下黑龙江地区的死亡率为约0.69%,尽管两者在确诊病例数量上有所差异但两者的疫情发展情况较为接近

制作简述:
引入Python中的numpy库、xlrd以及 matplotlib 的绘图模块,并通过 xlrd 函数建立与数据之间的联系,从而实现对数据的引用目的,并最终完成对其图形展示。

在这里插入图片描述

分析:
从图表中可以看出,在确诊病例与治愈病例数量上, 黑龙江省分别达到了约一千人左右, 其确诊病例与治愈病例的数量基本趋近于同一水平. 由此可见, 当前疫情呈现好转趋势. 但是值得注意的是, 黑龙江省与香港相比, 在确诊病例与治愈病例数量上仍存在一定差距. 由此可见, 黑龙江省在其防疫政策上略优于香港的相关措施. 然而值得注意的是, 两地在疫情防控的整体效果方面表现尚可.

请制作分月统计的条形图,并分别标注累计确诊、累计治愈、累计死亡以及累计境外输入的数据项

在这里插入图片描述
在这里插入图片描述

制作简述

分析

6、创意图(附录7)

在这里插入图片描述

各类图表各有其特点与不足之处:
柱状图能够清晰地展示累计确诊、累计治愈及累计死亡的具体数值,并明确各数值之间的差距;但无法具体体现每个月的增长或减少情况。
折线图能够直观地呈现病例随时间推移而增减的变化趋势;然而,在三者之间关系的展示上显得不够直观。
饼状图能够清晰地反映各部分在总体中所占的比例情况;但无法提供各部分的具体数值信息。
雷达图能够对比两个地区在某些指标上的数据差异;然而无法确切得知各具体数值信息。
箱线图能有效展示最大值与最小值之间的距离,并呈现中位数及四分位数的位置;但无法提供原始数据的具体数值信息。
词云图虽然不能给出具体数字信息;但可直观识别出疫情最严重的地区以及相对不严重的区域分布情况。
漏斗图则能清晰显示每个月的变化幅度大小;但无法提供具体的数据支持信息。

附录(源代码)
附录一:累计确诊折线图
#模块导入
import pandas as pd
from datetime import datetime
import matplotlib.pyplot as plt
#读取表格中的数据
data=pd.read_excel('数据.xlsx',None)
#设置字体
plt.rcParams['font.sans-serif']=['simhei']
data_in=data['黑龙江']
data_out=data['香港']
plt.figure(figsize=(15, 5))
plt.plot(data_in['日期'],data_in['累计确诊'])
plt.plot(data_out['日期'],data_out['累计确诊'])
plt.legend(['黑龙江','香港'])
plt.title('累计确诊人数趋势')
plt.show()

附录二:累计死亡折线图
#模块导入
import pandas as pd
from datetime import datetime
import matplotlib.pyplot as plt
#读取表格中的数据
data=pd.read_excel('数据.xlsx',None)
#设置字体
plt.rcParams['font.sans-serif']=['simhei']
data_in=data['黑龙江']
data_out=data['香港']
plt.figure(figsize=(15, 5))
plt.plot(data_in['日期'],data_in['累计死亡'])
plt.plot(data_out['日期'],data_out['累计死亡'])
plt.legend(['黑龙江','香港'])
plt.title('累计死亡人数趋势')
plt.show()

附录三:饼图
#模块导入
import pandas as pd
import matplotlib.pyplot as plt
#读取表格中的数据
data=pd.read_excel('数据.xlsx',None)
#设置字体
plt.rcParams['font.sans-serif']=['simhei']
data_in=data['黑龙江']
data_out=data['香港']
#治愈,死亡,确诊人数占比饼图
plt.subplot(2,1,1)
plt.pie([934,13,947],labels=['治愈','死亡','确诊'],autopct='%.2f%%')
plt.title('黑龙江')
plt.subplot(2,1,2)
plt.pie([1156,7,1268],labels=['治愈','死亡','确诊'],autopct='%.2f%%')
plt.title('香港')
plt.show()

附录四:雷达图
import numpy as np
import matplotlib.pyplot as plt
import xlrd
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
plt.style.use('ggplot')
workbook=xlrd.open_workbook('数据.xlsx')
sheet1=workbook.sheets()[0]
a=sheet1.row_values(122)
values = [0,0,0,0,0,0]
values[0]=a[1]
values[1]=a[3]
values[2]=a[4]
values[3]=a[8]
values[4]=a[10]
values[5]=a[11]
print(a)
feature = ['当日新增确诊', '当日新增治愈', '当日新增死亡', '累计确诊', '累计治愈', '累计死亡']
angles = np.linspace(0, 2 * np.pi, len(values), endpoint=False)
values = np.concatenate((values, [values[0]]))
angles = np.concatenate((angles, [angles[0]]))
sheet2=workbook.sheets()[1]
b=sheet2.row_values(122)
values_2 = [0,0,0,0,0,0]
values_2[0]=b[1]
values_2[1]=b[3]
values_2[2]=b[4]
values_2[3]=b[8]
values_2[4]=b[10]
values_2[5]=b[11]
print(values_2)
values_2 = np.concatenate([values_2, [values_2[0]]])
fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.plot(angles, values, 'o-', linewidth=2, label='黑龙江')
ax.fill(angles, values, alpha=0.25)
ax.plot(angles, values_2, 'o-', linewidth=2, label='香港')
ax.fill(angles, values_2, alpha=0.25)
ax.set_thetagrids(angles * 180 / np.pi, feature)
ax.set_ylim(0,1200)
plt.legend(loc='best')
ax.grid(True)
plt.show()

附录五:香港柱状图
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
mpl.rcParams[“font.sans-serif”] = [“SimHei”]
mpl.rcParams[“axes.unicode_minus”] = False
x = np.arange(5)
y = [95,714,1037,1084,1205]
y1 = [33,128,846,1037,1107]
y2 = [2,4,4,4,7]
bar_width = 0.2
tick_label = [ “2月份”, “3月份”, “4月份”, “5月份”,“6月份”]
plt.bar(x, y, bar_width, align=“center”, color=“g”, label=“累计确诊”, alpha=0.5)
plt.bar(x+bar_width, y1, bar_width, color=“b”, align=“center”, label=“累计治愈”, alpha=0.5)
plt.bar(x+bar_width+bar_width, y2, bar_width, color=“c”, align=“center”, label=“累计死亡”, alpha=0.5)
plt.xlabel(“香港”)
plt.ylabel(“疫情情况”)
plt.xticks(x+bar_width/2, tick_label)
plt.legend()
plt.show()

附录六:黑龙江柱状图
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
mpl.rcParams[“font.sans-serif”] = [“SimHei”]
mpl.rcParams[“axes.unicode_minus”] = False
x = np.arange(5)
y = [480,484,944,945,947]
y1 = [330,469,587,932,934]
y2 = [13,13,13,13,13]
bar_width = 0.2
tick_label = [ “2月份”, “3月份”, “4月份”, “5月份”,“6月份”]
plt.bar(x, y, bar_width, align=“center”, color=“g”, label=“累计确诊”, alpha=0.5)
plt.bar(x+bar_width, y1, bar_width, color=“b”, align=“center”, label=“累计治愈”, alpha=0.5)
plt.bar(x+bar_width+bar_width, y2, bar_width, color=“c”, align=“center”, label=“累计死亡”, alpha=0.5)
plt.xlabel(“黑龙江”)
plt.ylabel(“疫情情况”)
plt.xticks(x+bar_width/2, tick_label)
plt.legend()
plt.show()

选项配置为:
{
parallelAxis:
[
{
维度: 0,
名称:"累计确诊病例"
},
{
维度: 1,
名称:"累计治愈病例"
},
{
维度: 2,
名称:"累计死亡病例"
},
{
维度: 3,
类型:'category',
数据点:
['江西', '湖南', '广东', '河南']
}
],
系列:
[
{
类型设置:"并列图",
线宽设置单位数:"4",
数据点:
[
[932例确诊病例, 931例治愈病例, 1例死亡病例]从江西省记录而来,
[1019例确诊病例, 1015例治愈病例, 4例死亡病例]来自湖南省,
[1643例确诊病例, 1631例治愈病例,8例死亡病例]来自于广东省,
[1276例确诊病例, 1254例治愈病例 ,22例死亡案例]来自河南省
]
}
]
}

二.湖南与湖北

生成两个省份累计确诊人数的时间序列折线图,并结合相关区域的政策背景进行深入分析。
具体步骤如下:

  1. 调用Python库中的pandas、matplotlib.dates和matplotlib.pyplot模块。
  2. 通过调用pandas库建立与数据文件的连接。
  3. 运用pandas库对数据文件中的情况进行筛选和处理。
  4. 随后利用 matplotlib 模块对筛选后的数据进行可视化展示。
在这里插入图片描述

说明

导入Python标准库中的pandas库、matplotlib.dates子库及matplotlib.pyplot主库。随后通过建立关联将该地的数据接入系统。完成特定条件的数据筛选和提取,并基于筛选结果生成时间序列折线图进行展示。

在这里插入图片描述

从图表中可以看出:
湖北作为新冠疫情的重灾区,在缺乏有效药物治疗的情况下出现了较多的死亡病例。然而由于防控措施得当且成效显著,在湖北周边省份如湖南并未出现大规模死亡情况。
由此可见,在 sudden 突发疫情发生时,
疫情防控措施得当且采取了极为迅速且有效的措施。

绘制湖北和湖南两省的治愈人数、死亡人数及现有确诊病例占比饼图(使用matplotlib库中的subplot函数将多个图表合并到同一界面,并尝试通过np.linspace等函数优化图表美观度)

在这里插入图片描述

对上图进行分析:

导入Python模块中的numpy库、xlrd库以及matplotlib.pyplot库。随后通过调用xlrd函数建立与数据之间的关联关系,并实现对数据的引用目的。接着运用matplotlib.pyplot模块将其展示出来。

在这里插入图片描述

对上图所示的数据进行详细分析可知:湖北地区的累计确诊病例与治愈病例分别超过6万例,在湖南省之上;而上海市则达到约1万例水平。从数据对比来看,在湖北与湖南省之间存在显著差异:尽管湖北地区的确诊病例及治愈病例数量远超其他省份(如湖南省),但其死亡率较高也是有其原因的——作为疫情最初爆发地区,在缺乏有效治疗手段的情况下出现较高的死亡率是情理之中的事情。对比结果表明两地区疫情防控措施执行得较为理想

5. 生成柱状图表并按月份分组展示疫情数据
从‘湖北(湖南)’的数据表中提取各省份的累计确诊病例数、累计治愈人数、死亡病例数以及来自境外的输入病例数,并将这些信息按月份进行分类统计。随后将行索引设置为2至7(共6个月份),并将列名定义为‘疫情情况’。最后通过调用绘制函数生成柱状图表来展示数据变化趋势。

在这里插入图片描述
在这里插入图片描述

对以上两幅图表进行评估:湖北省在2月份累计确诊人数已接近其峰值水平(约6万),随后连续5个月呈现趋缓增长态势,在第6个月时治疗人数达到最大值点。湖南省2月份累计确诊约达500人,在接下来一个月内仍呈现不同程度的增长态势,在4月份时累计确诊人数已超过1000人左右。湖北作为国内最早出现本土疫情的地级市,并且也是本次疫情发生最初的省份之一,在病例不断涌现的情况下防控工作始终未见明显松懈。而湖南由于疫情防控措施较早启动并取得一定成效,在疫情防控趋于平稳之前新增病例数量相对较少

6. 气泡图

在这里插入图片描述

由图表可知:
湖北省在2月份累计确诊人数已接近峰值水平(约6万),随后连续五个月呈现增速放缓态势,在第四个多月期间治疗规模达到最大规模后疫情发展趋向缓和趋势。

附录(源代码)
附件1
import matplotlib.dates as mdate
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams[‘font.sans-serif’] = [‘SimHei’]
plt.rcParams[‘font.family’] = ‘sans-serif’
plt.rcParams[‘axes.unicode_minus’] = False
data = pd.read_excel(‘C:\Users\Bruce\Desktop\湖南.xlsx’,encoding=“GB2312”)
x=data[‘日期’]
y1=data[‘湖南累计确诊’]
y2=data[‘湖北累计确诊’]
plt.figure(figsize=(26, 8))
plt.plot(x, y1, label=“湖南累计确诊人数”, color="#F08080")
plt.plot(x, y2, label=“湖北累计确诊人数”, color="#DB7093", linestyle="–")
plt.title(“湖南/湖北累计确诊人数变化图”,size=20) #设置表名为“表名”
plt.xlabel(‘日期’,size=20) #设置x轴名为“x轴名”
plt.ylabel(‘人数’,size=20) #设置y轴名为“y轴名”
plt.legend()
plt.savefig(“湖南和湖北确诊人数变化图.jpg”)

导入matplotlib模块下的mdates模块
导入pandas库并命名为pd
设置Matplotlib的字体参数以支持中文字符
读取本地Excel文件'湖南.xlsx'的数据,默认使用GB2312编码
提取数据中的'日期'字段并赋值给变量x
提取数据中的'湖南累计死亡'字段并赋值给变量y1
提取数据中的'湖北累计死亡'字段并赋值给变量y2
设置图像大小为宽26单位高8单位
绘制x轴与y1曲线图并标记为"湖南累计死亡人数"
绘制x轴与y2曲线图并标记为"湖北累计死亡人数"
设置图表标题并指定大小为20号字体
设置x轴名称并指定大小为20号字体
设置y轴名称并指定大小为20号字体
显示图表图例框以区分两条曲线
保存图表文件名为"湖南和湖北死亡人数变化图.jpg"

附件3
import matplotlib
from matplotlib import pyplot as plt
plt.rcParams[‘font.sans-serif’]=[‘SimHei’] #解决中文乱码
plt.figure(figsize=(9,9)) #调节图形大小
labels = [u’现有确诊人数’,u’治愈人数’,u’死亡人数’] #定义标签
sizes = [68135, 63623, 4512] #每块值
sizes2=[1019,1015,4]
plt.subplot(2,1,1)
colors = [‘yellowgreen’,‘red’,‘lightskyblue’] #每块颜色定义
explode = (0,0,0) #将某一块分割出来,值越大分割出的间隙越大
patches,text1,text2 = plt.pie(sizes,
explode=explode,
labels=labels,
colors=colors,
autopct = ‘%3.2f%%’, #数值保留固定小数位
shadow = False, #无阴影设置
startangle =90, #逆时针起始角度设置
pctdistance = 0.7) #数值距圆心半径倍数距离
#patches饼图的返回值,texts1饼图外label的文本,texts2饼图内部的文本
#x,y轴刻度设置一致,保证饼图为圆形
for t in text1:
t.set_size(30)
for t in text2:
t.set_size(25)

plt.title(“湖北”,fontdict={‘weight’:‘normal’,‘size’: 30})

plt.subplot(2,1,2)
colors = ['yellowgreen', 'red', 'lightskyblue'] #每块颜色定义
pulled = (0,0,0) #将某一块分割出来,默认值越大分割出的间隙越大
patches, text1, text2 = plt.pie(sizes2,
explode=pulled,
labels=labels,
colors=colors,
autopct='format.%(value)f%%', #数值保留固定小数位显示格式化字符串
shadow=False, #无阴影设置
startangle=90, #逆时针起始角度设置
pctdistance=0.7) #数值距圆心半径距离比例设置
#patches饼图返回对象列表 texts1饼图外label的文本对象列表 texts2饼图内部text对象列表
for t in text1:
t.set_size(30) #外圈文字大小设置为30号字体大小单位
for t in text2:
t.set_size(25) #内圈文字大小设置为25号字体大小单位
plt.axis('equal') #设定坐标轴刻度一致 消除长方形效果 确保饼图为圆形
matplotlib.rcParams.update({'font.size': 15}) #更新全局样式参数 设置全局字体大小属性
plt.legend() #显示图例
plt.title('湖南', fontproperties={'weight': 'normal', 'size': 30}) #设定图表标题 标题字体属性配置
plt.show()

附件4
import numpy as np
import matplotlib.pyplot as plt
#正常显示中文
plt.rcParams[‘font.sans-serif’] = ‘Microsoft YaHei’
plt.rcParams[‘axes.unicode_minus’] = False
#使用ggplot的风格绘图
plt.style.use(‘ggplot’)
#构造数据
values = [68135, 63623, 4512, 0, 0, 0]
values_1 = [1019,1015,4, 0, 0, 0]
feature = [‘累计确诊’,‘累计治愈’,‘累计死亡’,‘累计疑似’,‘累计重症’,‘累计累计境外输入’]
N = len(values)
#生成角度
angles = np.linspace(0,2 _np.pi,N,endpoint=False)
#数据闭合
values = np.concatenate((values,[values[0]]))
angles = np.concatenate((angles,[angles[0]]))
values_1 = np.concatenate((values_1,[values_1[0]]))
#绘图
fig = plt.figure()
#设置为极坐标格式
ax = fig.add_subplot(111, polar=True)
#绘制折线图
ax.plot(angles,values,‘o-’,linewidth=2,label=‘湖北’)
ax.fill(angles,values,‘r’,alpha=0.5)
#填充颜色
ax.plot(angles,values_1,‘o-’,linewidth=2,label=‘湖南’)
ax.fill(angles,values_1,‘b’,alpha=0.5)
#通过这一个命令调整背景线
ax.set_thetagrids(angles_180/np.pi,feature)
#设置极轴范围
ax.set_ylim(0,70000)
#添加标题
plt.title(‘湖北与湖南各项数值比’)
#增加网格纸
plt.legend(loc=‘best’)
ax.grid(True)
plt.show()

附件5
import openpyxl
import matplotlib.pyplot as plt
import time
import matplotlib.pyplot as plt
from pylab import *
mpl.rcParams[‘font.sans-serif’] = [‘SimHei’]
data=openpyxl.load_workbook(‘data3.xlsx’)
data1=data[‘各省历史数据’]
death= {}
care={}
dead={}
input1={}
k=0
for row in data1.values:
k+=1
if k1001:
break
pass
if row[0]‘日期’ :
pass
elif k>=837:
death[row[0]]=row[8]
care[row[0]]=row[10]
dead[row[0]]=row[11]
input1[row[0]] = row[13]
print(row[0])
sorted_dict = death.items()
sorted_dict2 = care.items()
sorted_dict3 = dead.items()
sorted_dict4 = input1.items()
plt.figure(figsize=(26,8))
death1={}
care1={}
dead={}
input1={}
for i, j in sorted_dict:
death1[i]=j
for i, j in sorted_dict2:
care1[i]=j
for i, j in sorted_dict3:
dead[i]=j
for i, j in sorted_dict4:
input1[i]=j
x = tuple(death1.keys())
y = tuple(death1.values())
y1=tuple(care1.values())
y2=tuple(dead.values())
y3=tuple(input1.values())
plt.bar(x, y, color=‘r’,label=‘累计确诊’)
plt.bar(x, y1, color=‘b’,label=‘累计治愈’)
plt.bar(x, y2, color=‘g’,label=‘累计死亡’)
plt.bar(x, y3, color=‘y’,label=‘累计境外输入’)
plt.xlabel(“日期”) # 指定x轴描述信息
plt.ylabel(“人数”) # 指定y轴描述信息
plt.title(“湖南累计确诊,累计治愈,累计死亡,累计境外输入人数柱状图”) # 指定图表描述信息
plt.ylim(0,2000) # 指定Y轴的高度
plt.legend()
plt.show()
import openpyxl
import matplotlib.pyplot as plt
import time
import matplotlib.pyplot as plt
from pylab import *
mpl.rcParams[‘font.sans-serif’] = [‘SimHei’]
data=openpyxl.load_workbook(‘data3.xlsx’)
data1=data[‘各省历史数据’]
death= {}
care={}
dead={}
input1={}
k=0
for row in data1.values:
k+=1
if k170:
break
pass
if row[0]‘日期’:
pass
else:
death[row[0]]=row[8]
care[row[0]]=row[10]
dead[row[0]]=row[11]
input1[row[0]] = row[13]
print(row[0])
sorted_dict = death.items()
sorted_dict2 = care.items()
sorted_dict3 = dead.items()
sorted_dict4 = input1.items()
plt.figure(figsize=(26,8))
death1={}
care1={}
dead={}
input1={}
for i, j in sorted_dict:
death1[i]=j
for i, j in sorted_dict2:
care1[i]=j
for i, j in sorted_dict3:
dead[i]=j
for i, j in sorted_dict4:
input1[i]=j
x = tuple(death1.keys())
y = tuple(death1.values())
y1=tuple(care1.values())
y2=tuple(dead.values())
y3=tuple(input1.values())
plt.bar(x, y, color=‘r’,label=‘累计确诊’)
plt.bar(x, y1, color=‘b’,label=‘累计治愈’)
plt.bar(x, y2, color=‘g’,label=‘累计死亡’)
plt.bar(x, y3, color=‘y’,label=‘累计境外输入’)
plt.xlabel(“日期”) # 指定x轴描述信息
plt.ylabel(“人数”) # 指定y轴描述信息
plt.title(“湖北累计确诊,累计治愈,累计死亡,累计境外输入人数柱状图”) # 指定图表描述信息
plt.ylim(0,80000) # 指定Y轴的高度
plt.legend()
plt.show()

附件6
import openpyxl
import matplotlib.pyplot as plt
import time
from pylab import *
import numpy as np
mpl.rcParams[‘font.sans-serif’] = [‘SimHei’]
data=openpyxl.load_workbook(‘data3.xlsx’)
data1=data[‘各省历史数据’]
num={}
k=0
for row in data1.values:
k+=1
if k170 :
break
pass
if row[0]‘日期’:
pass
else:
num[row[0]]=row[8]
k=0
num1={}
for row in data1.values:
k+=1
if k170 :
break
pass
if row[0]‘日期’:
pass
else:
num1[row[0]]=row[10]
num2={}
k=0
for row in data1.values:
k+=1
if k170 :
break
pass
if row[0]‘日期’:
pass
else:
num2[row[0]]=row[11]
x3=list(num2.values())
x2=list(num1.values())
y1=list(num.keys())
x1=list(num.values())
plt.figure(figsize=(12,24))
x=np.array(x1)
y=np.array(y1)
x22=np.array(x2)
x33=np.array(x3)
n=0.0002
plt.scatter(y,x,s=x _n,alpha=0.6)
plt.scatter(y,x22,s=x_n,alpha=0.6)
plt.scatter(y,x33,s=x*n,alpha=0.6)
plt.title(‘湖北累计确诊累计治愈累计死亡气泡图’)
plt.xlabel(‘时间’)
plt.ylabel(‘人数’)
plt.legend([‘累计确诊’,‘累计治愈’,‘累计死亡’])
plt.show()

三.上海与安徽

1.两个省份累计确诊病例数随时间推移呈现折线走势(见附件1)
首先导入Python编程环境中所需的主要库包:Pandas用于数据分析处理、Matplotlib.Dates用于日期格式化、Matplotlib.Pyplot用于图表绘制。接着通过建立与所在Excel文件的数据连接。然后根据特定条件筛选并调用相关数据。随后使用Matplotlib库对所获取数据进行可视化展示。

在这里插入图片描述
在这里插入图片描述

从上图可以看出:
观察上图可知,
安徽省累计确诊人数最终趋于1000人以上,
而上海市累计确诊人数趋近于700人左右。
造成这一结果的原因包括:
其一是人口数量存在显著差异,
其中部分地区由于未能及时制定并落实应对措施,
其二是两地均采取了迅速有效的防控策略,
成功将确诊病例控制在千人的阈值以内。
值得指出的是,
尽管疫情初期
安徽省疫情传播速度略快于上海,
但上海凭借较强的医疗资源储备
以及完善的应急管理体系,
有效降低了感染规模。
然而进入3月初后,
安徽疫情防控形势逐渐稳定,
而上海仍存在零星病例。
这与安徽
采取强化管控措施密不可分。
值得注意的是,
两个区域因疫情导致死亡的人数均少于10人,
表明疫情致死率较低且治疗效果显著。

该模块主要完成两个省份疫情数据可视化工作(见附件2)。具体操作流程如下:首先对装载数据的Excel表格进行预处理工作;随后计算出南美洲地区的治愈人数、死亡人数及现有确诊人数总和;将计算出的数据直接导入绘图系统中;接着设置绘图窗口尺寸以及整体外观效果;并为每个扇区设定不同颜色;同时确保x轴和y轴刻度范围保持一致,并将饼图设定为圆形格式;最后通过t.set_size方法调节图表字体大小,并利用subplot函数整合多个图表到同一绘图区域中;最后通过plot函数完成图表绘制展示。

在这里插入图片描述

对以上两图进行分析:

根据两个省份的各项数据绘制雷达图(见附件3)。通过引入python模块中的numpy库以及xlrd库和matplotlib.pyplot库,通过-xlrd函数建立起与数据之间的联系,从而实现对数据的引用目标,并通过matplotlib.pyplot模块完成其展示。

在这里插入图片描述

观察上图后得出结论

4.柱状图展示(附件4)
从"上海(安徽)"表格中提取各省份的累计确诊、累计治愈及死亡人数数据,并将行索引设定为2至7(共计6个时间单元),然后将列标题设为"疫情情况"。最后通过调用绘图函数生成可视化图表以实现数据展示。

在这里插入图片描述
在这里插入图片描述

对以上两图进行分析:
安徽省的累计确诊人数在2月份就几乎来到了其的峰值,近1000人,在接下来的5个月内,增长近乎停滞,治疗人数在接下来的一个月内便达到了最大限度,疫情情况趋于平稳。上海市的累计确诊人数在2月份还处于“萌芽期”,达350人数,在接下来的5个月内,仍成不同幅度的增长,治疗人数也呈不同幅度的上升,在7月份,累计确诊人数达700人左右。
安徽省的疫情爆发早于上海市,但疫情平稳时期比上海来的更早,一方面是因为上海市早期的预防措施做得好且完备,另一方面是因为上海市后期涌入了大量返工人员和境外输入人员,使疫情控制有难度,需要时间。两者相同的是累计死亡人数少且增长近于停滞,说明疫情治疗状况良好。

5. 气泡图(基于累计治愈与现存确诊数据) 在单变量数据分析中,默认设置下生成一个气泡图,默认设置下默认情况下默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下,默认情况下

在这里插入图片描述
在这里插入图片描述

从这两幅图表出发,在上海地区的疫情监测中发现主要呈现出两种典型特征:其一主要集中在累计现存确诊人数为零至二百之间以及累计治愈人数达到二百五十至七百之间的区域;其二则主要集中在累积现存确诊零至八百以及累积治愈零至两百之间的区域;另外当累积治愈人数超过八百时,在四百至零这一范围内的区域也会出现一定比例的气泡分布情况。这些数据特征表明它们确实在调用的数据范围内得到了较为普遍的支持,并且这些指标的变化趋势持续了一定的时间段对应于疫情防控过程中的核心阶段即所谓的关键时期

首先讨论了柱状图的特点优势在于通过柱高的对比直观展示数据差异具有较高的可读性其不足之处则限于仅能反映单一变量的变化情况并且对于样本量较大的数据集处理起来存在一定局限性

附件(源代码)

附件1
import matplotlib.dates as mdate
import matplotlib.pyplot as plt

def plot_curve(data,title):
创建一个图像框,并设置其尺寸为4:3。
将当前轴指定为主绘图区域。
使用日期格式符'%Y-%m-%d'来显示日期。
将x轴上的日期标签旋转9度。
给图表加上标题。
绘制数据点并连接它们。
完成图表绘制并显示结果。
确保使用SimHei字体显示中文字符。
避免显示负号。

附件2
import matplotlib.pyplot as plt
import xlrd
workbook=xlrd.open_workbook(r’C:\Users\D\Desktop\资料和要求\各省历史数据.xlsx’)
labels = [u’现有确诊人数’,u’治愈人数’,u’死亡人数’]
anhui = [1,1,1]
shanghai = [1,1,1]
sheet1=workbook.sheets()[0]
a=sheet1.row_values(1165)
anhui[0]=a[14]
anhui[1]=a[10]
anhui[2]=a[11]
sheet2=workbook.sheets()[0]
b=sheet1.row_values(1969)
shanghai[0]=b[14]
shanghai[1]=b[10]
shanghai[2]=b[11]
plt.rcParams[‘font.sans-serif’]=[‘SimHei’]
explode = (0, 0, 0.2) # 设置各部分距离圆心的距离
fig1 = plt.figure(facecolor=‘white’,figsize=(10,5))
ax1=plt.subplot(1,2,1)
ax1.pie(anhui, explode=explode,autopct=’%1.1f%%’,
shadow=False, startangle=90)
ax1.axis(‘equal’)
ax1.legend(labels)
plt.title(“安徽”,fontdict={‘weight’:‘normal’,‘size’: 15})

ax1 := plt subplot(1, 2, 2)
ax1 pieChart(shanghai, explode=explode, formatString='%1.1f%%',
disableShadow=True, startAngle=90)
ax1.axis('equal')
ax1 legend(labels)
title("上海", fontdict={'weight':'normal', 'size': 4})

plt.tight_layout()
plt.show()

附件3
import numpy as np
import matplotlib.pyplot as plt
import xlrd

设置主字体为SimSun-Hei以适应中文字符显示需求。
通过Python xlrd库打开工作簿文件路径位于C盘用户文件夹下的Excel文件。
获取工作表第一行数据赋值给变量sheet1。
从sheet1中读取第1165行数据赋值给变量a。
初始化一个长度为6的零数组values并分别将a的不同索引项赋值给values数组的各项。
调用numpy.linspace函数生成均匀分布的角度序列并完成角度闭合处理。
通过numpy.concatenate函数将values数组与其第一个元素连接形成闭合序列。
调用xlrd库打开第二个工作表并将其中第1790行数据赋值给变量b。
重复上述数值提取过程得到values_2数组并完成闭合处理。
创建极坐标子图并设置其半径范围在0至1200之间。
绘制两条不同颜色的扇形曲线分别表示安徽与上海的数据分布情况并填充相应区域以增加视觉效果。
设置扇形刻度标签为对应的特征名称完成图表构建流程并输出结果图形。

附件4
上海
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
mpl.rcParams[“font.sans-serif”] = [“SimHei”]
mpl.rcParams[“axes.unicode_minus”] = False
x = np.arange(6)
y = [337, 516, 652, 672, 712,716]
y1 = [287, 341, 599, 657, 675,681]
y2 = [3, 6, 7, 7, 7,7]
bar_width = 0.2
tick_label = [“2月份”, “3月份”, “4月份”, “5月份”, “6月份”,“7月份”]
plt.bar(x, y, bar_width, align=“center”, color=“c”, label=“累计确诊”, alpha=0.5)
plt.bar(x+bar_width, y1, bar_width, color=“b”, align=“center”, label=“累计治愈”, alpha=0.5)
plt.bar(x+bar_width+bar_width, y2, bar_width, color=“r”, align=“center”, label=“累计死亡”, alpha=0.5)
plt.xlabel(“上海”)
plt.ylabel(“疫情情况”)
plt.xticks(x+bar_width/2, tick_label)
plt.legend()
plt.show()
安徽
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
mpl.rcParams[“font.sans-serif”] = [“SimHei”]
mpl.rcParams[“axes.unicode_minus”] = False
x = np.arange(6)
y = [990, 990, 991, 991, 991,991]
y1 = [888, 984, 985, 985, 985,985]
y2 = [6, 6, 6, 6, 6,6]
bar_width = 0.2
tick_label = [“2月份”, “3月份”, “4月份”, “5月份”, “6月份”,“7月份”]
plt.bar(x, y, bar_width, align=“center”, color=“c”, label=“累计确诊”, alpha=0.5)
plt.bar(x+bar_width, y1, bar_width, color=“b”, align=“center”, label=“累计治愈”, alpha=0.5)
plt.bar(x+bar_width+bar_width, y2, bar_width, color=“r”, align=“center”, label=“累计死亡”, alpha=0.5)
plt.xlabel(“安徽”)
plt.ylabel(“疫情情况”)
plt.xticks(x+bar_width/2, tick_label)
plt.legend()
plt.show()

附件5
上海
import pandas as pd
import matplotlib.pyplot as plt
covid1=pd.read_excel('data1.xlsx',parse_dates=True)
df = covid1[['累计现存确诊','累计治愈']]
size=df['累计现存确诊'].rank()
n=5
plt.scatter(df['累计治愈'],df['累计现存确诊'],s=size _n,alpha=0.6)
plt.title('上海市累计治愈/累计现存确诊气泡图')
plt.show()
安徽
import pandas as pd
import matplotlib.pyplot as plt
covid1=pd.read_excel('data1.xlsx',parse_dates=True)
df = covid1[['累计现存确诊','累计治愈']]
size=df['累计现存确诊'].rank()
n=5
plt.scatter(df['累计治愈'],df['累计现存确诊'],s=size_n,alpha=0.6)
plt.title('安徽省累计治愈/累计现存确诊气泡图')
plt.show()

全部评论 (0)

还没有任何评论哟~