大家本次过年应按照老惯例喜迎春节,但遇到新型冠状病毒却困于家中。在家里,我也不知道干什么。躺在床上时,我突然想到由于工作和自身懒惰的原因,我的CSDN博客就没有更新。借此时机,我为大家介绍我最近完成的小项目:基于Python绘制湖北省冠状病毒确诊病例分布图。
大学阶段Python才出现,我当时为了不落伍对Python进行一些了解。到现在为止,我对Python使用还不够熟练,接受大家的批评。小项目代码都是从CSDN里别的博主扒过来的,在此非常感谢被我扒代码的博主。没有这些博主,我也完成不了这个小项目。
数据来源:丁香医生 https://3g.dxy.cn/newh5/view/pneumonia?scene=2&clicktime=1579582238&enterid=157958223
采集数据时间:2020年1月27日
本项目ok.xls里的数据
项目实现过程注意的问题
1.使用什么来绘制分布图?
答:使用python中pyecharts包。
pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒,为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。(借鉴http://pyecharts.herokuapp.com/)
2.实现过程中发现数据未显示等问题在分布图中?
将cityName.append(alldata[0] + '市')和exec("cityName[11]='恩施土家族苗族自治州'")这两段代码删除,项目代码正常执行却发现分布图中没有显示数据等问题。
根本原因在于,我excel里的城市名没有带市字。所以利用append()函数追加一个‘市’。所以说cityName.append(alldata[0] + '市'),这条语句在本项目里不可去除,可以替代。如果你不使用exec("cityName[11]='恩施土家族苗族自治州'")语句,pyecharts将不识别恩施州这个字段,也就不会在分布图显示数据等内容。pyecharts只识别恩施土家族苗族自治州,所以该语句只能替换,不能被删除。exec("cityName[11]='恩施土家族苗族自治州'")中的exec函数可以动态执行简单的字符串代码,我认为这个函数操作简单,可直接替换字符内容。
3.分布图里未显示神农架林区的确诊病例信息?
pyecharts 显示神农架林区,但是原丁香园医生里未单独统计!
4.数据源怎么来的?
日后更新
分布图
实现代码(如下):
from pyecharts import Map
import xlrd
#获取冠状病毒数据集
data = xlrd.open_workbook('OK.xls', encoding_override='utf-8')
#确诊数目
confirmedCount=[]
#城市名
cityName=[]
table = data.sheets()[0] # 选定表
nrows = table.nrows # 获取行号
ncols = table.ncols # 获取列号
#读取数据
for i in range(1, nrows):
alldata = table.row_values(i)
cityName.append(alldata[0] + '市')
confirmedCount.append(alldata[1])
#替换名
exec("cityName[11]='恩施土家族苗族自治州'")
#绘制湖北省病情分布图
maps = Map(
"湖北省冠状病毒分布图",
title_color="#fff",
title_pos="center",
width=1200,
height=600,
background_color="#404a59",
)
maps.add(
"",
cityName,
confirmedCount,
maptype='湖北',
is_visualmap=True,
visual_text_color="#000",
visual_range=[0, 700],
is_label_show=True,
is_map_symbol_show=True,
is_more_utils=True,
)
maps.render(path="湖北省冠状病毒已确诊病例分布图.html")