pyecharts绘制地图可视化

我们这里使用pyecharts模块进行绘图。

pyecharts 项目包含了一系列的地理地图数据,这些数据或者已经内置,或者需要额外安装和加载,我们需要下载下面六个包。

选择自己需要的安装
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg
pip install echarts-united-kingdom-pypkg

pyecharts中Geo表达和城市关联的数据,Map表达和国家和省份关联的数据。

世界地图

from pyecharts import Map, Geo

# 世界地图数据
value = [95.1, 23.2, 43.3, 66.4, 88.5]
attr= ["China", "Canada", "Brazil", "Russia", "United States"]

map0 = Map("世界地图示例", width=1200, height=600)
map0.add("世界地图", attr, value, maptype="world",  is_visualmap=True, visual_text_color=‘#000‘)
map0.render(path="世界地图.html")

中国地图

from pyecharts import Map, Geo

# 中国地图
province_distribution = {‘河南‘: 45.23, ‘北京‘: 37.56, ‘河北‘: 21, ‘辽宁‘: 12, ‘江西‘: 6, ‘上海‘: 20, ‘安徽‘: 10, ‘江苏‘: 16, ‘湖南‘: 9,
                         ‘浙江‘: 13, ‘海南‘: 2, ‘广东‘: 22, ‘湖北‘: 8, ‘黑龙江‘: 11, ‘澳门‘: 1, ‘陕西‘: 11, ‘四川‘: 7, ‘内蒙古‘: 3, ‘重庆‘: 3,
                         ‘云南‘: 6, ‘贵州‘: 2, ‘吉林‘: 3, ‘山西‘: 12, ‘山东‘: 11, ‘福建‘: 4, ‘青海‘: 1, ‘舵主科技,质量保证‘: 1, ‘天津‘: 1,
                         ‘其他‘: 1}
provice = list(province_distribution.keys())
values = list(province_distribution.values())
map = Map("中国地图",‘中国地图‘, width=1200, height=600)
map.add("", provice, values, visual_range=[0, 50],  maptype=‘china‘, is_visualmap=True,
visual_text_color=‘#000‘)
map.show_config()
map.render(path="中国地图.html")

省份地图

from pyecharts import Map, Geo

# 城市 -- 指定省的城市 xx市
city = [‘郑州市‘, ‘安阳市‘, ‘洛阳市‘, ‘濮阳市‘, ‘南阳市‘, ‘开封市‘, ‘商丘市‘, ‘信阳市‘, ‘新乡市‘]
values2 = [1.07, 3.85, 6.38, 8.21, 2.53, 4.37, 9.38, 4.29, 6.1]

map2 = Map("河南地图",‘河南‘, width=1200, height=600)
map2.add(‘河南‘, city, values2, visual_range=[1, 10], maptype=‘河南‘, is_visualmap=True, visual_text_color=‘#000‘)
map2.show_config()
map2.render(path="河南地图.html")

市区地图

from pyecharts import Map, Geo

# 区县 -- 具体城市内的区县  xx县
quxian = [‘夏邑县‘, ‘民权县‘, ‘梁园区‘, ‘睢阳区‘, ‘柘城县‘, ‘宁陵县‘]
values3 = [3, 5, 7, 8, 2, 4]

map3 = Map("商丘地图",‘商丘‘, width=1200, height=600)
map3.add("商丘", quxian, values3, visual_range=[1, 10], maptype=‘商丘‘, is_visualmap=True,
visual_text_color=‘#000‘)
map3.render(path="商丘地图.html")

热力图

from pyecharts import Map, Geo

data = [
    ("海门", 9), ("鄂尔多斯", 12), ("招远", 12), ("舟山", 12), ("齐齐哈尔", 14), ("盐城", 15),
    ("赤峰", 16), ("青岛", 18), ("乳山", 18), ("金昌", 19), ("泉州", 21), ("莱西", 21),
    ("日照", 21), ("胶南", 22), ("南通", 23), ("拉萨", 24), ("云浮", 24), ("梅州", 25)]

attr, value = Geo.cast(data)

geo = Geo("全国主要城市空气质量热力图", "data from pm2.5", title_color="#fff", title_pos="center", width=1200, height=600,
          background_color=‘#404a59‘)

geo.add("空气质量热力图", attr, value, visual_range=[0, 25], type=‘heatmap‘, visual_text_color="#fff", symbol_size=15,
        is_visualmap=True, is_roam=False)
geo.show_config()
geo.render(path="空气质量热力图.html")

from pyecharts import Map, Geo

indexs = [‘上海‘, ‘北京‘, ‘合肥‘, ‘哈尔滨‘, ‘广州‘, ‘成都‘, ‘无锡‘, ‘杭州‘, ‘武汉‘, ‘深圳‘, ‘西安‘, ‘郑州‘, ‘重庆‘, ‘长沙‘]
values = [4.07, 1.85, 4.38, 2.21, 3.53, 4.37, 1.38, 4.29, 4.1, 1.31, 3.92, 4.47, 2.40, 3.60]
geo = Geo("全国主要城市空气质量评分", "data from pm2.5", title_color="#fff", title_pos="center", width=1200, height=600,
          background_color=‘#404a59‘)

# type="effectScatter", is_random=True, effect_scale=5  使点具有发散性
geo.add("空气质量评分", indexs, values, type="effectScatter", is_random=True, effect_scale=5, visual_range=[0, 5],
        visual_text_color="#fff", symbol_size=15, is_visualmap=True, is_roam=False)
geo.show_config()
geo.render(path="空气质量评分.html")

from pyecharts import Map, Geo

data = [
    ("海门", 9), ("鄂尔多斯", 12), ("招远", 12), ("舟山", 12), ("齐齐哈尔", 14), ("盐城", 15),
    ("赤峰", 16), ("青岛", 18), ("乳山", 18), ("金昌", 19), ("泉州", 21), ("莱西", 21),
    ("日照", 21), ("胶南", 22), ("南通", 23), ("拉萨", 24), ("云浮", 24), ("梅州", 25)]

attr, value = Geo.cast(data)

geo = Geo("全国主要城市空气质量热力图", "data from pm2.5", title_color="#fff", title_pos="center", width=1200, height=600,
          background_color=‘#404a59‘)

geo.add("空气质量热力图", attr, value, visual_range=[0, 25], type=‘scatter‘, visual_text_color="#fff", symbol_size=15,
        is_visualmap=True, is_roam=False)
geo.show_config()
geo.render(path="质量热力图.html")

示例:获取冠状病毒感染数据并可视化

import urllib
import urllib.request
import json
import os
import prettytable as pt
from pyecharts import Map, Geo

class Searchdata(object):
    def __init__(self,url):
        self.url = url
        self.china_list = {}
        self.china_data = {}
        self.province_list = {}
        self.province_data = {}
    def get_data(self):
        try:
            data = urllib.request.urlopen(self.url)
            data = json.loads(data.read())
            self.save(data)
            return data
        except:
            print("请求数据出错!")

    def is_exist(self):
        for i in os.listdir(os.getcwd()):
            if i == "data.txt":
                return 1
        return 0

    def save(self,data):
        if self.is_exist() == 0:
            with open("data.txt",‘w‘) as fp:
                fp.write(str(data))

    def get_china(self,data):
        data = data[‘data‘]
        self.china_data[‘total‘] = data[‘gntotal‘]
        self.china_data[‘deathNum‘] = data[‘deathtotal‘]
        self.china_data[‘susNum‘] = data[‘sustotal‘]
        self.china_data[‘cureNum‘] = data[‘curetotal‘]
        for i in data[‘list‘]:
            dic ={}
            dic[‘total‘] = i[‘value‘]
            dic[‘deathNum‘] = i[‘deathNum‘]
            dic[‘susNum‘] = i[‘susNum‘]
            dic[‘cureNum‘] = i[‘cureNum‘]
            self.china_list[i[‘name‘]] = dic

    def get_province(self,data):
        data = data[‘data‘]
        for i in data[‘list‘]:
            if i[‘name‘] == ‘湖北‘:
                self.province_data[‘total‘] =  i[‘value‘]
                self.province_data[‘deathNum‘] =  i[‘deathNum‘]
                self.province_data[‘susNum‘] =  i[‘susNum‘]
                self.province_data[‘cureNum‘] =  i[‘cureNum‘]
                for temp in i[‘city‘]:
                    dic = {}
                    dic[‘total‘] = temp[‘conNum‘]
                    dic[‘deathNum‘] = temp[‘deathNum‘]
                    dic[‘susNum‘] = temp[‘susNum‘]
                    dic[‘cureNum‘] = temp[‘cureNum‘]
                    self.province_list[temp[‘name‘]] = dic
                return
    def get_sheet1(self):
        self.tb = pt.PrettyTable()
        self.tb.field_names = ["省份", "总数", "死亡", "疑似", "治愈"]
        for k, v in self.china_list.items():
            self.tb.add_row([k, v[‘total‘], v[‘deathNum‘], v[‘susNum‘],v[‘cureNum‘]])
        self.tb.add_row([‘合计‘, self.china_data[‘total‘],self.china_data[‘deathNum‘], self.china_data[‘susNum‘], self.china_data[‘cureNum‘]])
        print(self.tb)

    def get_sheet2(self):
        self.tb = pt.PrettyTable()
        self.tb.field_names = ["地级市", "总数", "死亡", "疑似", "治愈"]
        for k, v in self.province_list.items():
            self.tb.add_row([k, v[‘total‘], v[‘deathNum‘], v[‘susNum‘], v[‘cureNum‘]])
        self.tb.add_row([‘合计‘, self.province_data[‘total‘], self.province_data[‘deathNum‘],
                         self.province_data[‘susNum‘], self.province_data[‘cureNum‘]])
        print(self.tb)

    def get_graph1(self):
        provice = list(self.china_list.keys())
        values = []
        for k, v in self.china_list.items():
            values.append(v[‘total‘])
        # 中国地图
        map = Map("中国地图", ‘中国地图‘, width=1200, height=600)
        map.add("", provice, values, visual_range=[0, 20000], maptype=‘china‘, is_visualmap=True,
                visual_text_color=‘#000‘)
        map.show_config()
        map.render(path="地图.html")

    def get_graph2(self):
        city =  list(self.province_list.keys())

        new_city = []
        for str in city:
            if len(str) == 2:
                str = str+"市"
                new_city.append(str)
            elif len(str) == 3:
                str = "恩施土家族苗族自治州"
                new_city.append(str)
            else:
                new_city.append(str)
        values = []
        for k, v in self.province_list.items():
            values.append(v[‘total‘])
        map2 = Map("湖北地图", ‘湖北‘, width=1200, height=600)
        map2.add(‘‘, new_city, values, visual_range=[0,10000], maptype=‘湖北‘, is_visualmap=True, visual_text_color=‘#000‘)
        map2.show_config()
        map2.render(path="湖北地图.html")

Searchtool =Searchdata(‘http://43.250.238.179:9090/showData‘)

data = Searchtool.get_data()
Searchtool.get_province(data)
Searchtool.get_sheet2()
Searchtool.get_graph2()

refer:

http://pyecharts.herokuapp.com/

https://05x-docs.pyecharts.org/#/

最全的pyecharts数据可视化,30分钟学会

python最全画地图,可视化数据

原文地址:https://www.cnblogs.com/-wenli/p/12264572.html

时间: 2024-11-08 20:55:58

pyecharts绘制地图可视化的相关文章

100行代码实现疫情地图可视化

前言 这个春节,大家都在密切关注着疫情的进展.不少人每天醒来打开手机的第一件事,便是查看家乡的疫情图.你所看到的可能是这样的: 又或者是这样的: 疫情进展牵动着我们的心.作为一名开发者,我们闭门在家为抗击疫情做贡献的同时,也可以继续深耕自己的技术.此文章旨在向大家介绍疫情地图可视化的原理,帮助大家深入理解echart. 核心思路 疫情图的核心在于疫情数据整理以及疫情数据可视化. 疫情数据整理 本文疫情数据是由网易新闻的公开数据整理而成,仅用于demo 展示.数据的具体地址已在代码中说明:此地址是

python-使用pyecharts绘制各省份高校数量图

1.环境 代码运行环境:python3.7 相关的库:pyecharts 1.7.1 代码编辑器:visual studio code 2.目的 通过使用pyecharts库,来绘制全国各省985高校的数量分布图,用这个来练习pyecharts库绘制地图. 3.相关说明 (1)pyecharts库简介 官方文档:https://pyecharts.org/#/zh-cn/intro 图库样本:http://gallery.pyecharts.org/#/README 官方的简介如下:Echart

vue地图可视化 ArcGIS篇

ArcGIS for javascript开发心得 本次实例中采用ArcGIS for javascript3.24版本,由于版本3与4在API等存在较大区别,就不一一列举,详细区别看官方解释arcgis for js4.7版本能够自动创建layer.graphs等类,而不像3.24版本需要在图形渲染前重新new 新的类.然而,查找大量文件资料,网上有关ArcGIS forjavascript的资料甚少,更不用说通过vueJS+arcGIS开发出一套可视化平台,在不断查看官方文档和实际操作,总结

Python地图可视化三大秘密武器

Python地图可视化库有大家熟知的pyecharts.plotly.folium,还有稍低调的bokeh.basemap.geopandas,也是地图可视化利器. 首先介绍下bokeh bokeh擅长制作交互式图表,当然在地图展示方面也毫不逊色. 示例代码地址: https://automating-gis-processes.github.io/2017/lessons/L5/interactive-map-bokeh.html Bokeh支持google地图.geojson数据的地理可视化

twoway 系列命令绘制地图

? 在谈到用stata绘制地图时,很多人首先想到的是spmap命令.其实,最常见的twoway系列命令就可以完成我们的大多数绘图需求. 对于spmap命令的使用,在线资源已经有很多了,这主要介绍使用最常用的twoway系列命令如何进行地图可视化.spmap命令的使用只做简单介绍.(后台回复「20200412」获取相关数据) ? 首先,使用shp2dta命令将 shp 文件转为 stata 能够识别的 .dta 文件.shp2dta语法格式如下: shp2dta using shpfilename

使用ArcGIS API for Silverlight + Visifire绘制地图统计图

原文:使用ArcGIS API for Silverlight + Visifire绘制地图统计图 最近把很久之前做的统计图又拿出来重新做了一遍,感觉很多时候不复习,不记录就真的忘了,时间是最好的稀释剂,真是这样. 恰好有些网友又向我问起,于是稍作记录,以便自己今后复习和参考. 本文示例用的版本为: Silverlight 5+Visifire 3.6.8+ArcGIS API for Silverlight 3.0+Visual Studio 2010 一.ArcGIS API For Sil

使用Adobe Illustrator + ArcGIS绘制地图 | Map Design Using ArcGIS + Adobe Illustrator

国内GIS/Cartography同行大部分使用CorelDraw绘制地图.相比之下,国外同行则更多使用Adobe Illustrator绘制地图.CorelDraw和Illustrator两个软件均为矢量图形制作软件,可以添加多种效果.两者的差异可以参考这个网页:https://www.admecindia.co.in/blog/differences-between-adobe-illustrator-and-coreldraw 不过对于GISer而言,相比之下illustrator更适合与

使用D3.js绘制地图并打点

本篇简单介绍一下使用D3.js绘制地图,并更具经纬度在地图打点.最后根据点生成voronoi图及其三角网. 下载地图geoJson文件 去网上下载要绘制地图的geoJson文件. 使用d3.json()加载地图文件,这里为了方便加载我把geoJson文件放在了js文件里. 绘制地图 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title>

pyecharts V1.x版本使用Map绘制地图修改主题背景色等

# -*- coding: utf-8 -*- """ @author: Dell Created on Mon Feb 3 11:22:25 2020 """ from pyecharts.charts import Map from pyecharts import options as opts from pyecharts.globals import ThemeType#主题 # 使用snapshot-selenium渲染成图片 fro