pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化 JS 库。用 Echarts 生成的图可视化效果非常棒,pyecharts 是为了与 Python 进行对接,方便在 Python 中直接使用数据生成图。
我们利用pyecharts和pycharm实现地图数据的可视化。
pyecharts导包报错请戳:
https://blog.csdn.net/weixin_43746433/article/details/91188733
pyecharts v0.3.2以后,pyecharts 将不再自带地图 js 文件。如用户需要用到地图图表,可自行安装对应的地图文件包。
地图文件被分成了三个 Python 包,分别为:
全球国家地图: echarts-countries-pypkg (1.9MB)
中国省级地图: echarts-china-provinces-pypkg (730KB)
中国市级地图: echarts-china-cities-pypkg (3.8MB)
直接使用python的pip安装:
选择自己需要的安装的地图
$ 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
一.查看数据
从51job爬取的大数据工作在各城市分布数据
import pandas as pd
data=pd.read_csv('test_datasets_finally.csv',delimiter='#',header=0)
df=pd.DataFrame(data)
print(df.shape)
print(df.loc[:,'area'].nunique())#地区数
area=df.loc[:,'area'].value_counts()#每个地区数量
#area=pd.DataFrame(area)
print(area.shape)
print(area.head())
area2=area.values.tolist()
area=area.reset_index()
area1=area.loc[:,'index'].tolist()
print('地区',area1)
print('数量',area2)
二.绘制中国地图
maptype=‘china’ 只显示全国直辖市和省级,数据只能是省名和直辖市的名称
1.绘制分布图
这三个可直接使用全国城市
from pyecharts import Bar
from pyecharts import Geo
from pyecharts import Map
map = Map("大数据工作分布图", "data from 51job",title_color="#404a59", title_pos="center")
map.add("", area1,area2 , maptype='china',is_visualmap=True,visual_text_color='#000',is_label_show=True)
map.render("./job_pic/大数据工作城市分布.html")
#map.render(path='snapshot.png')
#map.render(path='snapshot.pdf')
2.绘制热力图
geo = Geo("大数据工作分布热力图", "data from 51job", title_color="#fff", title_pos="center", width=1200, height=600, background_color='#404a59')
geo.add("大数据工作分布热力图", area1, area2, visual_range=[0, 35], maptype='china',type='heatmap',visual_text_color="#fff", symbol_size=15, is_visualmap=True, is_roam=False)
geo.render('./job_pic/大数据工作分布热力图.html')
geo = Geo("大数据工作分布城市评分", "data from 51job", title_color="#fff", title_pos="center", width=1200, height=600, background_color='#404a59')
# type="effectScatter", is_random=True, effect_scale=5 使点具有发散性
geo.add("空气质量评分", area1, area2, type="effectScatter",maptype='china', is_random=True, effect_scale=5, visual_range=[0, 5],visual_text_color="#fff", symbol_size=10, is_visualmap=True, is_roam=False)
geo.render("./job_pic/大数据工作分布城市评分.html")
河南地图 数据必须是省内放入城市名
# 城市 -- 指定省的城市 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.render(path="./job_pic/河南地图.html")
# 区县 -- 具体城市内的区县 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="./job_pic/商丘地图.html")
四.世界地图
#世界地图数据
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="./job_pic/世界地图.html")