iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Mac上怎么用Python实现疫情地图可视化
  • 297
分享到

Mac上怎么用Python实现疫情地图可视化

2023-06-02 02:06:38 297人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容介绍了“Mac上怎么用python实现疫情地图可视化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!核心思路疫情图的核心在于疫情数据整

本篇内容介绍了“Mac上怎么用python实现疫情地图可视化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

核心思路

疫情图的核心在于疫情数据整理以及疫情数据可视化

疫情数据整理

本文疫情数据是由网易新闻的公开数据整理而成,仅用于demo 展示。数据的具体地址已在代码中说明:此地址是一个 Get 请求,大家可以先拷贝地址到浏览器中查看数据格式。请求成功后服务端响应的数据格式如下(文中仅罗列出我们需要的数据

参数类型备注
codeint
msgString
dataObject

data 里面的参数

参数类型备注
listList各地级市确诊人数

Object 里面的参数

参数类型备注
nameString地级市名(简称)
provinceString省份
confirmint确诊人数

疫情数据可视化

地图是数据可视化的一种常用工具,我们用地图来展示疫情的具体分布。本文采用的是开源的 pyecharts 项目,方便开发者用于地图展示。其中,pyecharts 是一个帮助生成 Echarts 图表的类库;而 Echarts 则是百度开源的数据可视化 js 库,支持折线图、柱状图、散点图、K线图、饼图、雷达图、和弦图、力导向布局图、地图、仪表盘、漏斗图、事件河流图等12类图表,并可以在 PC 和移动设备上流畅地运行,兼容当前绝大部分浏览器。pyecharts 是在 Python 的基础上对 Echarts 所进行的扩展。

原理详解

接下来,本文将为大家详细说明如何搭建环境、整合数据、使用 pyecharts 来做数据可视化以及如何调试项目。

环境搭建

为了快速开发此功能并且尽可能地缩减代码量,此 demo 选择使用 Python 来进行开发。为此,我们应该准备好Python 的开发环境并导入python 基础库。

安装 Python 环境

Mac 上面自带了 Python2.7 

安装 pip

pip 是 Python 包管理工具,使用该工具可以快速地对Python 包予以查找、下载、安装、卸载等。如果你是在 python.org上下载的最新版本的安装包,则系统已经自带该工具。此外, Python 2.7.9 + 和 Python 3.4+ 以上版本都自带 pip 工具。可以使用“pip –version”命令行来查看当前 pip 的版本。

如果本机没有 配置Python 环境的,我们可以在线安装,只需要在终端输入以下 2 行命令即可

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py   $ sudo python get-pip.py

安装工程所需要的插件

在代码中大家不难发现我们导入了一些开源的库:

import mathimport timefrom fake_useragent import UserAgent from pyecharts.charts import Mapfrom pyecharts import options as optsimport requestsimport JSONimport sys

请求网络数据需要用到的插件:

pip install fake_useragent # 伪装请求,随机生成UserAgentpip install requests # Http请求库。

地图展示需要用到的插件:

pip install echarts-countries-pypkg  # 世界地图pip install echarts-china-provinces-pypkg  # 中国省级地图pip install echarts-china-cities-pypkg  # 中国城市地图

我们把上述的命令行复制到终端,逐行执行即可。

数据整合& 过滤

代码依然简洁明了,我们可以直接使用 requests 库构建一个 GET 请求,服务器响应的数据即为“ 全国所有城市的疫情情况”。

ua = UserAgent(verify_ssl=False)headers = {'User-Agent': ua.random}url = "https://c.m.163.com/ug/api/wuhan/app/index/feiyan-data-list?t=1580469818264"def getEpidemicInfo(url):    try:        response = requests.get(url, headers=headers)        print(response.status_code)        if response.status_code == 200:            content_field = json.loads(response.text)            epidemicInfo = content_field['data']['list']            return epidemicInfo        else:            print('请求错误码:' + response.status_code)            return None    except Exception as e:        print('此页有问题!', e)        return None

请求地址里面的 t 代表时间戳。我们输入上述代码,计算机便会输出前文所提及格式的数据。注意:拿到数据后还要进行过滤,我们仅需获得某个省份、自治州所包含的地级市或者是某个直辖市所包含的下属区县的疫情信息即可。
通过以下代码,我们对有关数据予以筛选:

# 生成本省疫情列表def makedict(list):    cityList = {}    for item in list:        for k, v in item.items():        # 1            if v == sys.argv[1]:            #2                if str(item["confirm"]).isdigit():                # 3                    if v == "北京" or v == "上海" or v == "天津":                        cityList[item['name'] + '区'] = int(item["confirm"])                    elif "自治州" in v:                        continue                    else:                        cityList[item['name'] + '市'] = int(item["confirm"])    return cityList
  1. sys.argv[1] 是一个传参,代表我们手动输入的省份、自治区、直辖市或特别行政区,比如浙江、新疆、北京、香港等;

  2. “confirm” 关键字用于匹配响应结果的 value 值,在上文疫情数据整合里有提及,代表当前城市的疫情人数;

  3. pyecharts 是根据城市的全称来适配的,此处需对数据格式中的地级市或者是下属区县进行排查,如果有城市采用简称的,需要进行调试,(如接口返回的城市名是恩施,我们则需要适配成恩施土家族苗族自治州),从而防止地图展示异常。

举例来讲,当我们输入浙江时,计算机最后输出的数据格式为:

{'湖州市': 9, '丽水市': 16, '舟山市': 7, '衢州市': 15, '金华市': 47, '嘉兴市': 30, '绍兴市': 33, '宁波市': 126, '台州市': 124, '杭州市': 151, '温州市': 396}

数据可视化

这是最核心的一步。makeEpidemicInfoMap方法里面的 dict 对应我们过滤得到的数据:

def makeEpidemicInfoMap(dict):    # 省和直辖市    province_distribution = dict    value = province_distribution.values()    print(province_distribution)    title = str(int(time.strftime("%Y%m%d")) - 1) + sys.argv[1] + "疫情地图"    epidemicCount = []    for k, v in dict.items():        epidemicCount.append(v)    # 1    epidemicCount.sort(reverse=True)    maxEpidemic = handle(epidemicCount.pop(0))    maxEpidemic = int(maxEpidemic)    # 2    map = Map()    # 3    map.set_global_opts(        title_opts=opts.TitleOpts(title=title),        visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True,                                          pieces=[                                              {"max": 9999999, "min": maxEpidemic, "label": ">" + str(maxEpidemic),                                               "color": "#780707"},  # 数据范围分段,分颜色,可以根据数据大小具体分配大小                                              {"max": int(maxEpidemic), "min": int(maxEpidemic / 8) * 7,                                               "label": str(int(maxEpidemic / 8) * 7) + "-" + str(int(maxEpidemic)),                                               "color": "#B40404"},                                              {"max": int(maxEpidemic / 8) * 7, "min": int(maxEpidemic / 8) * 4,                                               "label": str(int(maxEpidemic / 8) * 4) + "-" + str(                                                   int(maxEpidemic / 8) * 7 - 1), "color": "#CD1111"},                                              {"max": int(maxEpidemic / 8) * 4, "min": int(maxEpidemic / 8),                                               "label": str(int(maxEpidemic / 8)) + "-" + str(                                                   int(maxEpidemic / 8) * 4 - 1), "color": "#F68181"},                                              {"max": int(maxEpidemic / 8), "min": 1,                                               "label": "1-" + str(int(maxEpidemic / 8)), "color": "#F5A9A9"},                                              {"max": 0, "min": 0, "label": "0", "color": "#FFFFFF"},                                          ], )  # 最大数据范围,分段    )    # 4    map.add(title, data_pair=province_distribution.items(), maptype=sys.argv[1], is_roam=True)    map.render(sys.argv[1] + '疫情地图.html')
  1. 根据所选省份各城市的确诊人数对所有城市进行降序并得到当前省份确诊人数最多的城市名称。maxEpidemic 是最接近该城市确诊人数的高位数,比如当前省份疫情最为严重的城市的确诊数量为“357”,则 maxEpidemic=300 ,引入此参数的目的是让地图呈现效果更加清晰直观。

  2. 用PyEcharts绘制地图需要对Map对象进行初始化,以用于地理区域数据的可视化。

  3. 以建造者模式对 map 进行设值,其中,VisualMapOpts 是 PyEcharts 的视觉映射配置项。

    # 指定 visualMapPiecewise 组件的最大值。    max =100    # 是否为分段型    is_piecewise: bool = False,     # 自定义的每一段的范围,以及每一段的文字,以及每一段的特别的样式。例如:    # pieces: [    #   {"min": 1500}, // 不指定 max,表示 max 为无限大(Infinity)。    #   {"min": 900, "max": 1500},    #   {"min": 310, "max": 1000},    #   {"min": 200, "max": 300},    #   {"min": 10, "max": 200, "label": '10 到 200(自定义label)'},    #   {"value": 123, "label": '123(自定义特殊颜色)', "color": 'grey'}, //表示 value 等于 123 的情况    #   {"max": 5}     // 不指定 min,表示 min 为无限大(-Infinity)。    # ]

详细配置可以见 PyEcharts 官网。此处的范围分为6 段,每一段的范围均是根据上述计算出来的 maxEpidemic 进行动态调整的,目的是为了保证疫情图的视觉效果,这里面我仅是做了非常简略的范围模型,仅供参考
4. 使用 PyEcharts 在当前目录下面生成一个网页

调试

执行 python map.py [省份],如:

python /Users/xxx/map.py 浙江

会在当前目录下面得到一份名字为 浙江疫情地图.html 的文件,直接使用浏览器打开即可,最后的展示效果是不是很酷
Mac上怎么用Python实现疫情地图可视化

Mac上怎么用Python实现疫情地图可视化
Mac上怎么用Python实现疫情地图可视化

“Mac上怎么用Python实现疫情地图可视化”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Mac上怎么用Python实现疫情地图可视化

本文链接: https://www.lsjlt.com/news/228576.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mac上怎么用Python实现疫情地图可视化
    本篇内容介绍了“Mac上怎么用Python实现疫情地图可视化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!核心思路疫情图的核心在于疫情数据整...
    99+
    2023-06-02
  • 怎么用Python实现疫情地图可视化
    本篇内容主要讲解“怎么用Python实现疫情地图可视化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python实现疫情地图可视化”吧!前言这个春节,大家...
    99+
    2024-04-02
  • Python疫情数据可视化分析怎么实现
    这篇文章主要讲解了“Python疫情数据可视化分析怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python疫情数据可视化分析怎么实现”吧!前言本项目主要通过python的matpl...
    99+
    2023-07-02
  • vue3+three.js实现疫情可视化功能
    目录前言项目描述项目目标api说明数据使用项目开始安装依赖首页球体控制球体创建病毒数值增加动画表格展示横向柱状图中国地图历史分析表格下载结语前言 自成都九月份以来疫情原因被封了一两周...
    99+
    2024-04-02
  • 用Python可视化新冠疫情数据
    目录前言数据获取数据可视化python的特色总结前言 不知道大伙有没有看到过这一句话:“中国(疫苗研发)非常困难,因为在中国我们没有办法做第三期临床试验,因为没有病人了。...
    99+
    2024-04-02
  • Python疫情确诊折线图实现数据可视化实例详解
    目录案例描述实现步骤一、导入模块二、读取文件内容三、json转换python四、获取需要用到的数据五、生成图表六、关闭文件案例描述 根据可参考数据,实现对疫情确诊人数数据的可视化。 ...
    99+
    2024-04-02
  • Python实战之疫苗研发情况可视化
    目录一、安装plotly库二、疫苗研发情况三、数据处理四、可视化疫苗的分布情况五、各品牌疫苗上市情况(仅部分国家)六、组织宽表七、补全缺失数据八、绘制堆叠柱状图一、安装plotly库...
    99+
    2024-04-02
  • Python利用folium实现地图可视化
    folium的简介 用Python处理数据,然后用Folium将它在Leaflet地图上进行可视化。Folium能够将通过Python处理后的数据轻松地在交互式的Leaflet地图...
    99+
    2024-04-02
  • 怎么在Python中使用folium实现地图可视化
    怎么在Python中使用folium实现地图可视化?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.安装folium模块pip install foli...
    99+
    2023-06-15
  • python用pyecharts实现地图数据可视化
    目录一、全国各省单年GDP的可视化二、全国各省多年GDP的可视化有的时候,我们需要对不同国家或地区的某项指标进行比较,可简单通过直方图加以比较。但直方图在视觉上并不能很好突出地区间的...
    99+
    2024-04-02
  • 怎么用Python代码画美国疫情地图
    本篇内容主要讲解“怎么用Python代码画美国疫情地图”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Python代码画美国疫情地图”吧!Plotly可绘制的部分效果图如下Plotly绘制的...
    99+
    2023-06-16
  • Python实现地图可视化案例详解
    目录​前言一、pyechartsMapGeoBmap二、folium结 语​前言 Python的地图可视化库很多,Matplotlib库虽然作图很强大,但只能做静态地图。而我今天要讲...
    99+
    2024-04-02
  • 怎么用Python可视化神器Plotly动态演示全球疫情变化趋势
    怎么用Python可视化神器Plotly动态演示全球疫情变化趋势,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。用 Python可视化神器 Plotly ...
    99+
    2023-06-16
  • Python实现地图可视化folium完整过程
    目录Folium简介1.安装folium模块2.安装jupyter3.查看世界地图4.查看中国地图5.武汉市地图6.添加标记7.查找武汉科技大学8.未解决9.参考文章Folium简介...
    99+
    2024-04-02
  • Python实战之疫苗研发情况可视化的示例分析
    这篇文章将为大家详细讲解有关Python实战之疫苗研发情况可视化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、安装plotly库因为这部分内容主要是用plotly库进行数据动态展示,所以要先...
    99+
    2023-06-15
  • python用pyecharts实现地图数据可视化的方法
    这篇文章给大家分享的是有关python用pyecharts实现地图数据可视化的方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。有的时候,我们需要对不同国家或地区的某项指标进行比较,可简单通过直方图加以比较。但直...
    99+
    2023-06-14
  • 使用python实现三维图可视化
    这是学习tensorflow框架中遇到的知识,这里定义函数的时候选用的是将x和y封装起来,方便tensorflow求导。 要慢慢习惯这种写法 import numpy as np...
    99+
    2024-04-02
  • Python怎么使用树状图实现可视化聚类
    今天小编给大家分享一下Python怎么使用树状图实现可视化聚类的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。树状图树状图是显...
    99+
    2023-07-05
  • matplotlib+cartopy+geopandas,实现专业地图可视化!
    知乎上有人问如何实现精细化地图?现有的excel、tableau、powerbi都只能套用有限的模板,是否有工具能实现高度定制化? 除了专业的Gis软件外,我能想到相对完美的就是使用Pytho...
    99+
    2023-09-14
    python Powered by 金山文档
  • SpringBoot+Echarts如何实现用户访问地图可视化
    这篇文章主要介绍SpringBoot+Echarts如何实现用户访问地图可视化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!SpringBoot+Echarts用户访问地图可视化意义 在常见的电商、新闻、社...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作