Pyecharts可视化全国新冠疫情

您所在的位置:网站首页 全国肺炎最新数据图 Pyecharts可视化全国新冠疫情

Pyecharts可视化全国新冠疫情

#Pyecharts可视化全国新冠疫情| 来源: 网络整理| 查看: 265

目录

一、前言

二、代码实现过程

        1、导包

        2、创建类对象

        3、查看数据概况

         4、画中国地图

        5、画城市柱状图

        6、画省份柱状图

        7、画城市饼图

        8、画省份饼图

        9、画可视化大屏

        10、定义主方法

        11、运行主方法

 三、以下是完整代码

pyecharts官网:https://pyecharts.org/#/zh-cn/intro 一、前言

1、近几年来,我国一直受着新冠疫情的侵扰,随着每天新冠信息的日夜更迭,我们该如何从新闻中挖掘到有效信息呢?所以大体有2部分,第一是进行数据采集 ,第二是进行数据分析和数据可视化。新冠疫情的数据采集部分已经发了,大家如果不知道,可以点击这个链接,本篇讲述的是如何对新冠疫情数据进行数据分析和数据可视化。可视化大屏效果图如下​

2、通过新冠疫情数据采集部分,我们得到了一个名叫COVID_19的csv文件,如下图,这是我们进行数据分析和数据可视化的基础,接下来就是进行数据分析和数据可视化了

二、代码实现过程         1、导包 # coding=utf-8 import pandas as pd # 用pandas进行数据处理 from pyecharts.charts import Bar,Page,Pie,Map # 画柱状图,可视化大屏,饼图,地图 import pyecharts.options as opts # 设置配置项 from pyecharts.globals import ThemeType # 设置主题         2、创建类对象

   创建对象并构建读取csv文件的全局变量

class Analysis(object): def __init__(self): self.data=pd.read_csv('./COVID_19.csv',encoding='gbk') # 读取文件         3、查看数据概况 def data_info(self): print(self.data) # 查看数据 print(self.data.info()) # 查看数据概况 print(self.data.describe()) # 查看数据描述

        运行结果如图

         4、画中国地图 def china_map(self): total_number=self.data['本土确诊']+self.data['本土无症状'] # 总感染者数量 print(total_number) data=self.data['日期'].tolist() # 转换为python的列表 map_=( Map(init_opts=opts.InitOpts(theme=ThemeType.CHALK,chart_id=1)) # 设置主题和id .add("感染人数", [list(z) for z in zip(self.data['城市'].tolist(),total_number.tolist())], "china-cities") .set_global_opts( title_opts=opts.TitleOpts(title="中国地区疫情严重程度",subtitle='更新时间:{0}'.format(data[0])), # 设置标题 visualmap_opts=opts.VisualMapOpts(max_=9000,is_piecewise=True), # 配置视觉映射,最大值为7000000 toolbox_opts=opts.ToolboxOpts(is_show=True) # 设置工具箱 ) .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 取消标签配置项 # .render('地图.html') ) return map_         5、画城市柱状图 def city_bar(self): number_of_confirmed_each_city=self.data[['城市','本土确诊']].nlargest(10,'本土确诊') # 本土确诊数量前10的城市 number_of_asymptomatic_each_city=self.data[['城市','本土无症状']].nlargest(10,'本土无症状') # 本土无症状数量前10的城市 data=self.data['日期'].tolist() # 转换为python的列表 bar=( Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK,chart_id=2)) # 设置主题和id .add_xaxis(number_of_asymptomatic_each_city['城市'].tolist()) .add_yaxis('本土无症状数量',number_of_asymptomatic_each_city['本土无症状'].tolist(), itemstyle_opts=opts.ItemStyleOpts(color='yellow')) # 设置柱状颜色 .add_yaxis('本土确诊数量',number_of_confirmed_each_city['本土确诊'].tolist(), itemstyle_opts=opts.ItemStyleOpts(color='#00BFFF')) # 设置柱状颜色 .set_global_opts(title_opts=opts.TitleOpts(title='各城市的无症状和确诊人数', title_link='https://blog.csdn.net/hhq2002322/article/details/128064525?spm=1001.2014.3001.5502' ,subtitle='更新时间:{0}'.format(data[0])), # 设置标题,标题链接,和副标题 toolbox_opts=opts.ToolboxOpts(is_show=True), # 设置工具箱 datazoom_opts=[opts.DataZoomOpts(is_show=True),opts.DataZoomOpts(type_='inside')]) # 设置区域缩放条 # .render('柱状图1.html') ) return bar         6、画省份柱状图 def provinces_bar(self): data2 = self.data[['所属省份', '本土确诊']].groupby(['所属省份'])[['本土确诊']].sum() # 各省份本土确诊数量总和 data3 = self.data[['所属省份', '本土无症状']].groupby(['所属省份'])[['本土无症状']].sum() # 各省份本土无症状数量总和 data=self.data['日期'].tolist() # 转换为python的列表 bar=( Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK,chart_id=3)) # 设置主题和id .add_xaxis(data2.index.tolist()) .add_yaxis('本土无症状数量',data3['本土无症状'].tolist(), itemstyle_opts=opts.ItemStyleOpts(color='yellow')) # 设置柱状颜色 .add_yaxis('本土确诊数量',data2['本土确诊'].tolist(), itemstyle_opts=opts.ItemStyleOpts(color='#00BFFF')) # 设置柱状颜色 .set_global_opts(title_opts=opts.TitleOpts(title='各省份无症状和确诊人数', title_link='https://blog.csdn.net/hhq2002322/article/details/128064525?spm=1001.2014.3001.5502' ,subtitle='更新时间:{0}'.format(data[0])), # 设置标题,标题链接,和副标题 toolbox_opts=opts.ToolboxOpts(is_show=True), # 设置工具箱 datazoom_opts=[opts.DataZoomOpts(is_show=True), opts.DataZoomOpts(type_='inside')]) # 设置区域缩放条 # .render('柱状图2.html') ) return bar         7、画城市饼图 def city_pie(self): High_risk_city_areas = self.data[['城市', '高风险地区']].nlargest(5, '高风险地区') # 高风险地区数量前10的城市 pie=( Pie(init_opts=opts.InitOpts(theme=ThemeType.CHALK,chart_id=4)) # 设置主题和id .add('高风险地区数量', [list(z) for z in zip(High_risk_city_areas['城市'],High_risk_city_areas['高风险地区'])], center=["35%", "50%"]) .set_global_opts(title_opts=opts.TitleOpts(title='高风险地区数量前10的城市', title_link='https://blog.csdn.net/hhq2002322/article/details/127867991', pos_left='40%'), # 设置标题,标题链接,和标题的位置 legend_opts=opts.LegendOpts(pos_left="80%",type_="scroll",orient="vertical")) # 设置图例的位置 .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) # 设置返回的提示框内容 # .render('饼图1.html') ) return pie         8、画省份饼图 def provinces_pie(self): data1=self.data[['所属省份','高风险地区']].groupby(['所属省份'])[['高风险地区']].sum() # 各省份高风险地区数量总和 High_risk_provinces_areas=data1.nlargest(5,'高风险地区') # 高风险地区数量前10的省份 pie=( Pie(init_opts=opts.InitOpts(theme=ThemeType.CHALK,chart_id=5)) # 设置主题和id .add('高风险地区数量', [list(z) for z in zip(High_risk_provinces_areas.index,High_risk_provinces_areas['高风险地区'])], center=["35%", "50%"]) .set_global_opts(title_opts=opts.TitleOpts(title='高风险地区数量前10的省份', title_link='https://blog.csdn.net/hhq2002322/article/details/127867991', pos_left='40%'), # 设置标题,标题链接,和标题的位置 legend_opts=opts.LegendOpts(pos_left="80%",type_="scroll",orient="vertical")) # 设置图例的位置 .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) # 设置返回的提示框内容 # .render('饼图2.html') )         9、画可视化大屏 def page(self): c=( Page(layout=Page.DraggablePageLayout) # 可以自定义布局 .add( self.china_map(), self.city_bar(), self.provinces_bar(), self.city_pie(), self.provinces_pie(), ) .render() ) # 调用以上的功能图函数 Page.save_resize_html('render.html', cfg_file='./chart_config.json', # 调整布局后生成的json文件 dest='组合图.html') # 根据调整后的布局生成的组合图         10、定义主方法 def run(self): self.data_info() # 运行数据概况函数 self.page() # 运行可视化大屏函数         11、运行主方法 if __name__ == '__main__': analysis=Analysis() # 创建实例对象 analysis.run() # 运行主函数

目录中生成了名叫组合图的html文件,打开浏览器运行

 三、以下是完整代码 # coding=utf-8 import pandas as pd # 用pandas进行数据处理 from pyecharts.charts import Bar,Page,Pie,Map # 画柱状图,可视化大屏,饼图,地图 import pyecharts.options as opts # 设置配置项 from pyecharts.globals import ThemeType # 设置主题 class Analysis(object): def __init__(self): self.data=pd.read_csv('./COVID_19.csv',encoding='gbk') # 读取文件 def data_info(self): print(self.data) # 查看数据 print(self.data.info()) # 查看数据概况 print(self.data.describe()) # 查看数据描述 def china_map(self): total_number=self.data['本土确诊']+self.data['本土无症状'] # 总感染者数量 print(total_number) data=self.data['日期'].tolist() # 转换为python的列表 map_=( Map(init_opts=opts.InitOpts(theme=ThemeType.CHALK,chart_id=1)) # 设置主题和id .add("感染人数", [list(z) for z in zip(self.data['城市'].tolist(),total_number.tolist())], "china-cities") .set_global_opts( title_opts=opts.TitleOpts(title="中国地区疫情严重程度",subtitle='更新时间:{0}'.format(data[0])), # 设置标题 visualmap_opts=opts.VisualMapOpts(max_=9000,is_piecewise=True), # 配置视觉映射,最大值为7000000 toolbox_opts=opts.ToolboxOpts(is_show=True) # 设置工具箱 ) .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) # 取消标签配置项 # .render('地图.html') ) return map_ def city_bar(self): number_of_confirmed_each_city=self.data[['城市','本土确诊']].nlargest(10,'本土确诊') # 本土确诊数量前10的城市 number_of_asymptomatic_each_city=self.data[['城市','本土无症状']].nlargest(10,'本土无症状') # 本土无症状数量前10的城市 data=self.data['日期'].tolist() # 转换为python的列表 bar=( Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK,chart_id=2)) # 设置主题和id .add_xaxis(number_of_asymptomatic_each_city['城市'].tolist()) .add_yaxis('本土无症状数量',number_of_asymptomatic_each_city['本土无症状'].tolist(), itemstyle_opts=opts.ItemStyleOpts(color='yellow')) # 设置柱状颜色 .add_yaxis('本土确诊数量',number_of_confirmed_each_city['本土确诊'].tolist(), itemstyle_opts=opts.ItemStyleOpts(color='#00BFFF')) # 设置柱状颜色 .set_global_opts(title_opts=opts.TitleOpts(title='各城市的无症状和确诊人数', title_link='https://blog.csdn.net/hhq2002322/article/details/128064525?spm=1001.2014.3001.5502' ,subtitle='更新时间:{0}'.format(data[0])), # 设置标题,标题链接,和副标题 toolbox_opts=opts.ToolboxOpts(is_show=True), # 设置工具箱 datazoom_opts=[opts.DataZoomOpts(is_show=True),opts.DataZoomOpts(type_='inside')]) # 设置区域缩放条 # .render('柱状图1.html') ) return bar def provinces_bar(self): data2 = self.data[['所属省份', '本土确诊']].groupby(['所属省份'])[['本土确诊']].sum() # 各省份本土确诊数量总和 data3 = self.data[['所属省份', '本土无症状']].groupby(['所属省份'])[['本土无症状']].sum() # 各省份本土无症状数量总和 data=self.data['日期'].tolist() # 转换为python的列表 bar=( Bar(init_opts=opts.InitOpts(theme=ThemeType.CHALK,chart_id=3)) # 设置主题和id .add_xaxis(data2.index.tolist()) .add_yaxis('本土无症状数量',data3['本土无症状'].tolist(), itemstyle_opts=opts.ItemStyleOpts(color='yellow')) # 设置柱状颜色 .add_yaxis('本土确诊数量',data2['本土确诊'].tolist(), itemstyle_opts=opts.ItemStyleOpts(color='#00BFFF')) # 设置柱状颜色 .set_global_opts(title_opts=opts.TitleOpts(title='各省份无症状和确诊人数', title_link='https://blog.csdn.net/hhq2002322/article/details/128064525?spm=1001.2014.3001.5502' ,subtitle='更新时间:{0}'.format(data[0])), # 设置标题,标题链接,和副标题 toolbox_opts=opts.ToolboxOpts(is_show=True), # 设置工具箱 datazoom_opts=[opts.DataZoomOpts(is_show=True), opts.DataZoomOpts(type_='inside')]) # 设置区域缩放条 # .render('柱状图2.html') ) return bar def city_pie(self): High_risk_city_areas = self.data[['城市', '高风险地区']].nlargest(5, '高风险地区') # 高风险地区数量前10的城市 pie=( Pie(init_opts=opts.InitOpts(theme=ThemeType.CHALK,chart_id=4)) # 设置主题和id .add('高风险地区数量', [list(z) for z in zip(High_risk_city_areas['城市'],High_risk_city_areas['高风险地区'])], center=["35%", "50%"]) .set_global_opts(title_opts=opts.TitleOpts(title='高风险地区数量前10的城市', title_link='https://blog.csdn.net/hhq2002322/article/details/127867991', pos_left='40%'), # 设置标题,标题链接,和标题的位置 legend_opts=opts.LegendOpts(pos_left="80%",type_="scroll",orient="vertical")) # 设置图例的位置 .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) # 设置返回的提示框内容 # .render('饼图1.html') ) return pie def provinces_pie(self): data1=self.data[['所属省份','高风险地区']].groupby(['所属省份'])[['高风险地区']].sum() # 各省份高风险地区数量总和 High_risk_provinces_areas=data1.nlargest(5,'高风险地区') # 高风险地区数量前10的省份 pie=( Pie(init_opts=opts.InitOpts(theme=ThemeType.CHALK,chart_id=5)) # 设置主题和id .add('高风险地区数量', [list(z) for z in zip(High_risk_provinces_areas.index,High_risk_provinces_areas['高风险地区'])], center=["35%", "50%"]) .set_global_opts(title_opts=opts.TitleOpts(title='高风险地区数量前10的省份', title_link='https://blog.csdn.net/hhq2002322/article/details/127867991', pos_left='40%'), # 设置标题,标题链接,和标题的位置 legend_opts=opts.LegendOpts(pos_left="80%",type_="scroll",orient="vertical")) # 设置图例的位置 .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")) # 设置返回的提示框内容 # .render('饼图2.html') ) return pie def page(self): c=( Page(layout=Page.DraggablePageLayout) # 可以自定义布局 .add( self.china_map(), self.city_bar(), self.provinces_bar(), self.city_pie(), self.provinces_pie(), ) .render() ) # 调用以上的功能图函数 Page.save_resize_html('render.html', cfg_file='./chart_config.json', # 调整布局后生成的json文件 dest='组合图.html') # 根据调整后的布局生成的组合图 def run(self): self.data_info() # 运行数据概况函数 self.page() # 运行可视化大屏函数 if __name__ == '__main__': analysis=Analysis() # 创建实例对象 analysis.run() # 运行主函数



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3