Pyecharts 根据经纬度和量值的大小,画出散点图
请注意,点击下方的阅读全文,有的图片比较难加载
而今天我们主要介绍的是地图+散点图,地图+热力图,应用到的函数是Geo,主要参数说明如下:
- attr:标签名称(在例子里面就是地点)
- value:数值(在例子里就是流动人员)
- visual_range:可视化的数值范围
- symbol_size:散点的大小
- visual_text_color:标签颜色
- is_piecewise :颜色是否分段显示(False为渐变,True为分段)
- is_visualmap:是否映射(数量与颜色深浅是否挂钩)
- maptype :地图类型,可以是中国地图,省地图,市地图等等
- visual_split_number :可视化数值分组
- geo_cities_coords:自定义的经纬度
更多参数请查看:https://blog.csdn.net/weixin_41666051/article/details/83245595
参数介绍完了,那么我们进入主题。首先涉及到地图,那么肯定是得先有地图是吧?所以呢需要地图的朋友们一个个安装吧!不然画出来的图只有散点,没有地图,或者出现地图显示不全等等问题。
$ 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
然后就开始导入数据,处理,可视化了,代码如下:
#加载pyecharts
from pyecharts import Geo,Style
import pandas as pd
#导入excel表举例
df=pd.read_excel('流动人口.xlsx')
df.head()
#导入自定义的地点经纬度
geo_cities_coords={df.iloc[i]['地点']:[df.iloc[i]['经度'],df.iloc[i]['纬度']]
for i in range(len(df))} #根据文件大小生成字典
attr=list(df['地点']) #字典的每个键值
value=list(df['流动人口']/100000) #由于量值的太大,换算以下(散点的颜色就是和这个想关的)
style = Style(title_color= "#fff",title_pos = "center",
width = 1200,height = 600,background_color = "#404a59")
#可视化
geo = Geo('东莞各个CGI总用户数分布',**style.init_style)
geo.add("",attr,value,visual_range=[0,100],symbol_size= 5,
visual_text_color= "#fff",is_piecewise = True,
is_visualmap= True,maptype = '东莞', visual_split_number= 10,
geo_cities_coords=geo_cities_coords)
geo.render( '东莞各个CGI总用户数分布.html')
结果如下:
当is_piecewise = False:
当is_visualmap= False,颜色与点之间不再映射,也就是说每个点的流动人口数量与颜色深浅没有任何关系:
当增加一个参数type = 'heatmap',就会得到热力图:
style = Style(title_color= "#fff",title_pos = "center",
width = 1200,height = 600,background_color = "#404a59")
geo = Geo('东莞各个CGI总用户数分布',**style.init_style)
geo.add("",attr,value,visual_range=[0,100],
visual_text_color= "#fff",type = 'heatmap',
is_visualmap= True,maptype = '东莞',
geo_cities_coords=geo_cities_coords)
ok,今天就先简单介绍到这里,以后会通过大量的项目来实践说明。
pyecharts官网:A Python Echarts Plotting Library
自定义值范围绘制地图+散点图
例如:
整个变量是df2,lan表示维度,lat是精度,要根据price做出散点图,数据有3000多条,而price的每个颜色的范围是自定的
style = Style(title_color= "#fff",title_pos = "center",width = 1200,height = 600,background_color = "#404a59")
geo_cities_coords={i:[df2.iloc[i]['lat'],df2.iloc[i]['lan']]
for i in range(len(df2))}
attr=[i for i in range(len(df2))]
values=list(df2['price'])
piece=[
{'max': 1000,'label': '1000以下','color':'#50A3BA'}, #有上限无下限,label和color自定义
{'min': 1000, 'max': 1800,'label': '1000-1800','color':'#81AE9F'},
{'min': 1800, 'max': 2300,'label': '1800-2300','color':'#E2C568'},
{'min': 2300, 'max': 2800,'label': '2300-2800','color':'#FCF84D'},
{'min': 2800, 'max': 5000,'label': '2800-5000','color':'#E49A61'},
{'min': 5000, 'max': 8000,'label': '5000-8000','color':'#DD675E'},
{'min': 8000, 'label': '8000以上','color':'#D94E5D'}#有下限无上限
]
geo = Geo('上海房价分布',**style.init_style)
geo.add("",attr=attr,value=values,symbol_size= 5,visual_text_color= "#fff",is_piecewise = True,
is_visualmap= True,maptype = '上海',
pieces=piece, #注意,要想pieces生效,必须is_piecewise = True,
geo_cities_coords=geo_cities_coords)
geo.render( '上海房价分布2.html')
结果