ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

大数据可视化案例二:地图

2020-05-22 12:51:23  阅读:371  来源: 互联网

标签:min color max self 地图 label 案例 可视化 opts


Echart:

ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的 Canvas 类库 ZRender,提供直观,生动,可交互,可高度个性化定制的数据可视化图表。

ECharts 提供了常规的折线图,柱状图,散点图,饼图,K线图,用于统计的盒形图,用于地理数据可视化的地图,热力图,线图,用于关系数据可视化的关系图,treemap,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。   在本次内容中,使用Pyechats来实现新冠肺炎疫情地图的绘制。   第一步:获取实时的新冠肺炎数据
import requests
from lxml import etree
import re
import json

class Get_data():
    #获取数据
    def get_data(self):
        response = requests.get("https://voice.baidu.com/act/newpneumonia/newpneumonia/")
        with open('html.txt', 'w') as file:
            file.write(response.text)
    #提取更新时间
    def get_time(self):
        with open('html.txt','r') as file:
            text = file.read()
        #正则表达式,返回的是列表,提取最新更新时间
        time = re.findall('"mapLastUpdatedTime":"(.*?)"', text)[0]
        return time
    #解析数据
    def parse_data(self):
        with open('html.txt', 'r') as file:
            text = file.read()
        html = etree.HTML(text)
        result = html.xpath('//script[@type="application/json"]/text()')
        result = result[0]
        result = json.loads(result)
        #转换成字符串
        result = json.dumps(result['component'][0]['caseList'])
        with open('data.json', 'w') as file:
            file.write(result)
            print('数据已写入json文件。。。')

  

第二步:绘制地图

pyecharts的地图官方源码:

from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker

c = (
    Map()
    .add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china")
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Map-VisualMap(连续型)"),
        visualmap_opts=opts.VisualMapOpts(max_=200),
    )
)

  

效果:

 

 新冠肺炎的可视化地图:

from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker
import os

class Draw_map():
#判断是否存在存放地图的文件夹,没有的话创建文件夹
def __init__(self):
if not os.path.exists('./map/china'):
os.makedirs('./map/china')
#将RGB转换为绘制地图需要的十六进制的表达形式
def get_colour(self,a,b,c):
result = '#' + ''.join(map((lambda x: "%02x" % x), (a,b,c)))
return result.upper()
#绘制每个城市的地图
def to_map_city(self,area, variate,province,update_time):
#显示标识栏的颜色分层表示
pieces = [
{"max": 99999999, "min": 10000, "label": "≥10000", "color": self.get_colour(102, 2, 8)},
{"max": 9999, "min": 1000, "label": "1000-9999", "color": self.get_colour(140, 13, 13)},
{"max": 999, "min": 500, "label": "500-999", "color": self.get_colour(204, 41, 41)},
{"max": 499, "min": 100, "label": "100-499", "color": self.get_colour(255, 123, 105)},
{"max": 99, "min": 50, "label": "50-99", "color": self.get_colour(255, 170, 133)},
{"max": 49, "min": 10, "label": "10-49", "color": self.get_colour(255,202,179)},
{"max": 9, "min": 1, "label": "1-9", "color": self.get_colour(255,228,217)},
{"max": 0, "min": 0, "label": "0", "color": self.get_colour(255,255,255)},
]
#绘制地图
c = (
# 设置地图大小
Map(init_opts=opts.InitOpts(width = '1000px', height='880px'))
.add("累计确诊人数", [list(z) for z in zip(area, variate)], province, is_map_symbol_show=False)
# 设置全局变量 is_piecewise设置数据是否连续,split_number设置为分段数,pices可自定义数据分段
# is_show设置是否显示图例
.set_global_opts(
title_opts=opts.TitleOpts(title="%s地区疫情地图分布"%(province), subtitle = '截止%s %s省疫情分布情况'%(update_time,province), pos_left = "center", pos_top = "10px"),
legend_opts=opts.LegendOpts(is_show = False),
visualmap_opts=opts.VisualMapOpts(max_=200,is_piecewise=True,
pieces=pieces,
),
)
.render("./map/china/{}疫情地图.html".format(province))
)

# 绘制全国的地图
def to_map_china(self, area,variate,update_time):
pieces = [{"max": 999999, "min": 1001, "label": ">10000", "color": "#8A0808"},
{"max": 9999, "min": 1000, "label": "1000-9999", "color": "#B40404"},
{"max": 999, "min": 100, "label": "100-999", "color": "#DF0101"},
{"max": 99, "min": 10, "label": "10-99", "color": "#F78181"},
{"max": 9, "min": 1, "label": "1-9", "color": "#F5A9A9"},
{"max": 0, "min": 0, "label": "0", "color": "#FFFFFF"},
]

c = (
# 设置地图大小
Map(init_opts=opts.InitOpts(width='1000px', height='880px'))
.add("累计确诊人数", [list(z) for z in zip(area, variate)], "china", is_map_symbol_show=False)
.set_global_opts(
title_opts=opts.TitleOpts(title="中国疫情地图分布", subtitle='截止%s 中国疫情分布情况'%(update_time), pos_left="center", pos_top="10px"),
legend_opts=opts.LegendOpts(is_show=False),
visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True,
pieces=pieces,
),
)
.render("./map/中国疫情地图.html")
)


  

效果:

全国:

 

 内蒙古自治区:

 

 

标签:min,color,max,self,地图,label,案例,可视化,opts
来源: https://www.cnblogs.com/zhuozige/p/12936508.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有