开发者

python根据json数据画疫情分布地图的详细代码

开发者 https://www.devze.com 2022-12-28 09:21 出处:网络 作者: 阳862
目录一.基础地图使用1.掌握使用pyecharts构建基础的全国地图可视化图表二.疫情地图——国内疫情地图1.案例效果代码三.疫情地图——省级疫情地图 四.数据集
目录
  • 一.基础地图使用
    • 1.掌握使用pyecharts构建基础的全国地图可视化图表
  • 二.疫情地图——国内疫情地图
    • 1.案例效果
    • 代码
  • 三.疫情地图——省级疫情地图
    •  四.数据集

      python根据json数据画疫情分布地图的详细代码

      注:数据集在文章最后

      一.基础地图使用

      1.掌握使用pyecharts构建基础的全国地图可视化图表

      演示

      from pyecharts.charts import Map
      from pyecharts.options import VisualMapOpts
      map=Map()
      data=[
          ("北京",99),
          ("上海",199),
          ("湖南",299),
          ("台湾",199),
          ("安徽",299),
          ("广州",399),
          ("湖北",599)
      ]
      map.add("地图",data,"china")
      map.set_global_opts(
          visualmap_opts=VisualMapOpts(
              is_show=True
       
          )
      )
      map.render("1.html")

      结果是

      python根据json数据画疫情分布地图的详细代码

      这里有个问题

      python根据json数据画疫情分布地图的详细代码

       is_show=True表示展示图例,但是不准怎么办?

      这就需要手动校准范围

      from pyecharts.charts import M编程客栈ap
      from pyecharts.options import VisualMapOpts
      map=Map()
      data=[
          ("北京",99),
          ("上海",199),
          ("湖南",299),
          ("台湾",199),
          ("安徽",299),
          ("广州",399),
          ("湖北",599)
      ]
      map.add("地图",data,"china")
      map.set_global_opts(
          visualmap_opts=VisualMapOpts(
              is_show=True,
              is_piecewise=True,
              pieces=[
                  {"min": 1, "max": 9, "label": "1-9人", "color": "#CCFFFF"},
                  {"min": 10, "max": 99, "label": "10-99人", "color": "#FFFF99"},
                  {"min": 100, "max": 499, "label": "100-499人", "color": "#FF9966"},
                  {"min": 500, "max": 999, "label": "500-999人", "color": "#FF6666"},
                  {"min": 1000, "max": 9999, "label": "1000-9999人", "color": "#CC3333"},
                  {"min": 10000, "label": "10000以上", "color": "#990033"},
       
              ]
       
          )
      )
      map.render("1.html")

      结果是

      python根据json数据画疫情分布地图的详细代码

       这样就可以了

      再解释一下颜色的设置

      python根据json数据画疫情分布地图的详细代码

      python根据json数据画疫情分布地图的详细代码

      这样就可以查询相应的颜色

      二.疫情地图——国内疫情地图

      1.案例效果

      python根据json数据画疫情分布地图的详细代码

      演示

      python根据json数据画疫情分布地图的详细代码

       利用json在线在线解析工具可以看到

      python根据json数据画疫情分布地图的详细代码

       那么我们就可以知道该怎么去提取

      #从字典中取出省份数据
      province_data_list=data_dict["areaTree"][0]["children"]

      代码

      import json
      from pyecharts.charts import Map
      from pyecharts.options import *
      #读取文件
      f=open("D:/疫情.txt","r",encoding="utf-8")
      data=f.read()
      #关闭文件
      f.close()
      #获取各省数据
      #将字符串json转化为python的字典
      data_dict=json.loads(data)
      #从字典中取出省份数据
      province_data_list=data_dict["areaTree"][0]["chi编程ldren"]
      #组装每个省份和确诊人数为元组,并各个省的数据都封装如列表
      data_list=[]#绘图需要用到数据列表
      for province_data in province_data_list:
          province_name=province_data["name"]#省份名称
          province_confirm=province_data["total"]["confirm"]#确诊人数
          data_list.append((province_name,province_confirm))#这里注意列表里面嵌套的是元组
      print(f"{type(data_list)}\n{data_list}")
       
      #创建地图对象
      map=Map()
      #添加数据
      map.add("各省份确诊人数",data_list,"china")
      #设置全局配置,定制分段到1视觉映射
      map.set_global_opts(
          title_opts=TitleOpts("全国疫情地图",pos_left="center",pos_bottom="1%"),
          visualmap_opts=VisualMapOpts(
              is_show=True,#是否显示
              is_piecewise=True,#是否分段
              pieces=[
                  {"min": 1, "max": 9, "label": "1-9人", "color": "#CCFFFF"},
                  {"min": 10, "max": 99, "label": "10-99人", "color": "#FFFF99"},
                  {"min": 100, "max": 499, "label": "100-499人", "color": "#FF9966"},
                  {"min": 500, "max": 999, "label": "500-999人", "color": "#FF6666"},
                  {"min": 1000, "max": 9999, "label": "1000-9999人", "color": "#CC3333"},
                  {"min": 10000, "label": "10000以上", "color": "#990033"},
       
              ]
       
      编程客栈    )
      )
      map.render("全国疫情地图.html")
      

      结果是

      python根据json数据画疫情分布地图的详细代码

      三.疫情地图——省级疫情地图

      以河南省为例

      python根据json数据画疫情分布地图的详细代码

      代码

      import json
      from pyecharts.charts import Map
      from pyecharts.options import *
       
      f=open("D:/疫情.txt","r",encoding="utf-8")
      data=f.read()
      #关闭文件
      f.close()
      #json数据转化为python字典
      data_dict=json.loads(data)
      #取到河南省数据
      cities_data=data_dict["areaTree"][0]["children"][3]["children"]
      #准备数据为元组并放入list
      data_list=[]
       
      for city_data in cities_data:
          city_name=city_data["name"]+"市"
          city_confirmjs=city_data["total"]["confirm"]
          data_list.append((city_name,city_confirm))
      #构建地图
      map=Map()
      ma编程客栈p.add("河南省疫情分布",data_list,"河南")
      #设置全局选项
      map.set_global_opts(
          title_opts=TitleOpts(title="河南疫情地图"),
          visualmap_opts=VisualMapOpts(
              is_show=True,#是否显示
              is_piecewise=True,#是否分段
              pieces=[
                  {"min": 1, "max": 9, "label": "1-9人", "color": "#CCFFFF"},
                  {"min": 10, "max": 99, "label": "10-99人", "color": "#FFFF99"},
                  {"min": 100, "max": 499, "label": "100-499人", "color": "#FF9966"},
                  {"min": 500, "max": 999, "label": "500-999人", "color": "#FF6666"},
           开发者_Go培训       {"min": 1000, "max": 9999, "label": "1000-9999人", "color": "#CC3333"},
                  {"min": 10000, "label": "10000以上", "color": "#990033"},
       
              ]
          )
      )
      map.render("河南疫情地图.html")
      

      结果是

      python根据json数据画疫情分布地图的详细代码

      有个问题:济源市因为数据集中没有相应数据,所以需要我们手动加上去

      python根据json数据画疫情分布地图的详细代码

      这样就可以了

      结果是

      python根据json数据画疫情分布地图的详细代码

       四.数据集

      链接: https://pan.baidu.com/s/10eqeAEPjZC9PohlSnMOkJg?pwd=sjte 

      提取码: sjte 

      python根据json数据画疫情分布地图的详细代码

      到此这篇关于python根据json数据画疫情分布地图的详细代码的文章就介绍到这了,更多相关python画疫情分布地图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号