疫情分布地图实现 — — pyecharts初探

疫情分布地图实现 — — pyecharts初探

准备工作

  • 数据:此处通过爬虫爬取腾讯新闻的疫情数据
  • 安装pyecharts库 打开cmd命令行窗口,通过 pip install pyecharts 来安装pyecharts包

#数据准备

此处以腾讯新闻的数据为例 通过抓包分析得到数据url = “https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5”

#导入requests包
import requests
import re
#导入pyecharts.charts模块的Map模块
from pyecharts.charts import Map

#数据爬取地址
url = 'https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5'

#进行数据爬取
resp = requests.get(url)

#通过replace把数据中的\去掉
resp_new = resp.text.replace("\\","")

#通过正则表达式匹配出我们需要的内容
country_name = re.compile('"name":"(.*?)"',re.S).findall(resp_new)
country_confirm = re.compile('"nowConfirm":(.*?)\,').findall(resp_new)

#整合数据在一起
data = [[country_name[i],country_confirm[i]] for i in range(len(country_name)]

#创建地图
map = Map().add(series_name="国内疫情分布",
                data_pair=data, #导入数据
                maptype="china",#选择地图地区
                is_map_symbol_show=False #是否显示各地区标记点

                )
map.set_series_opts(label_opts=opts.LabelOpts(is_show=False))#是否在地图上显示地区名称
map.set_global_opts(title_opts=opts.TitleOpts(title="国内疫情分布"),
                    visualmap_opts= visualmap_opts=opts.VisualMapOpts(
            # 是否显示视觉映射配置
            is_show = True,
         
            
            # 映射过渡类型,可选,"color", "size"  (颜色映射还是大小映射)(重要!!!)
            type_ = "color",
        
               
            # 指定 visualMapPiecewise 组件的最小值。
            min_ = 0,

        
            # 指定 visualMapPiecewise 组件的最大值。
            max_ = 100,

        
            # 两端的文本,如['High', 'Low'],(自定义) range_text: Union[list, tuple] = None,
            range_text = ['高', '低'],

        
            # visualMap 组件过渡颜色 (可以自定义)(颜色从淡到深) range_color: Union[Sequence[str]] = None,
            range_color = ['#CCEBFF','#eced86','#d0021b'],

        
            # visualMap 组件过渡 symbol 大小.range_size: Union[Sequence[int]] = None,
            range_size = None,
        
        
            # visualMap 图元以及其附属物(如文字标签)的透明度。range_opacity: Optional[Numeric] = None,
            range_opacity = None,
        
        
            # 如何放置 visualMap 组件,水平('horizontal')或者竖直('vertical')。
            orient = 'vertical',
        
        
            # visualMap 组件离容器左侧的距离。
            # left 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
            # 也可以是 'left', 'center', 'right'。
            # 如果 left 的值为'left', 'center', 'right',组件会根据相应的位置自动对齐。
            pos_left = '10',
        
        
            # visualMap 组件离容器右侧的距离(同上)。
            # right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
            pos_right = None,
        
        
            # visualMap 组件离容器上侧的距离(同上)。
            # top 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
            # 也可以是 'top', 'middle', 'bottom'。
            # 如果 top 的值为'top', 'middle', 'bottom',组件会根据相应的位置自动对齐。
            pos_top = None,
        
        
            # visualMap 组件离容器下侧的距离(同上)。
            # bottom 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比。
            pos_bottom = None,
        
        
            # 对于连续型数据,自动平均切分成几段。默认为5段。连续数据的范围需要 max 和 min 来指定
            split_number = 5,
        
        
            # 指定取哪个系列的数据,默认取所有系列。series_index: Union[Numeric, Sequence, None] = None,
            series_index = None,
        
        
            # 组件映射维度Optional[Numeric]
            dimension = None,
        
        
            # 是否显示拖拽用的手柄(手柄能拖拽调整选中范围)。
            is_calculable = True,
        
        
            # 是否为分段型
            is_piecewise = False,
        
        
            # 是否反转 visualMap 组件(默认False)
            is_inverse = 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)。
            # ]
            pieces = None,
        
        
            # 定义 在选中范围外 的视觉元素。(用户可以和 visualMap 组件交互,用鼠标或触摸选择范围)
            #  可选的视觉元素有:
            #  symbol: 图元的图形类别。
            #  symbolSize: 图元的大小。
            #  color: 图元的颜色。
            #  colorAlpha: 图元的颜色的透明度。
            #  opacity: 图元以及其附属物(如文字标签)的透明度。
            #  colorLightness: 颜色的明暗度,参见 HSL。
            #  colorSaturation: 颜色的饱和度,参见 HSL。
            #  colorHue: 颜色的色调,参见 HSL。
            out_of_range = None,
        
        
            # 图形的宽度,即长条的宽度。
            item_width = 0,
        
        
            # 图形的高度,即长条的高度。
            item_height = 0,
        
        
            # visualMap 组件的背景色。
            background_color = '#CCCC33',
        
        
            # visualMap 组件的边框颜色。
            border_color = '#EE1111',
        
            # visualMap 边框线宽,单位px。
            border_width = 2,
        
        
            # 文字样式配置项,参考 `series_options.TextStyleOpts`
            textstyle_opts = None,
            )        
                    )
map.render("中国疫情分布.html")



示例图片

Z`UEE8JF84O_6RE.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值