Pyecharts 根据经纬度和量值的大小,画出散点图

请注意,点击下方的阅读全文,有的图片比较难加载

      而今天我们主要介绍的是地图+散点图,地图+热力图,应用到的函数是Geo,主要参数说明如下:

  1. attr:标签名称(在例子里面就是地点)
  2. value:数值(在例子里就是流动人员)
  3. visual_range:可视化的数值范围
  4. symbol_size:散点的大小
  5. visual_text_color:标签颜色
  6. is_piecewise :颜色是否分段显示(False为渐变,True为分段)
  7. is_visualmap:是否映射(数量与颜色深浅是否挂钩)
  8. maptype :地图类型,可以是中国地图,省地图,市地图等等
  9. visual_split_number :可视化数值分组
  10. 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')

结果如下:

Pyecharts 根据经纬度和量值的大小,画出散点图

当is_piecewise = False:

Pyecharts 根据经纬度和量值的大小,画出散点图

当is_visualmap= False,颜色与点之间不再映射,也就是说每个点的流动人口数量与颜色深浅没有任何关系:

Pyecharts 根据经纬度和量值的大小,画出散点图

当增加一个参数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)
 

Pyecharts 根据经纬度和量值的大小,画出散点图

ok,今天就先简单介绍到这里,以后会通过大量的项目来实践说明。

 

pyecharts官网:A Python Echarts Plotting Library

自定义值范围绘制地图+散点图

例如:

Pyecharts 根据经纬度和量值的大小,画出散点图

整个变量是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')

结果

Pyecharts 根据经纬度和量值的大小,画出散点图