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

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

      大家都知道python各种的好,但是呢在可视化方面还是有所欠缺的,而今天的主角pyecharts就很好的弥补了这一短板,今天先简单的介绍一下如何利用pyecharts使得我们的数据可视化效果更加好。小文汇总了一下,利用pyecharts我们可以作图的类型分别为:Bar(柱状图/条形图),Bar3D(3D 柱状图),Boxplot(箱形图),EffectScatter(带有涟漪特效动画的散点图),Funnel(漏斗图),Gauge(仪表盘),Geo(地理坐标系),Graph(关系图),HeatMap(热力图),Kline(K线图),Line(折线/面积图),Line3D(3D 折线图),Liquid(水球图),Map(地图),Parallel(平行坐标系)Pie(饼图),Polar(极坐标系),Radar(雷达图),Sankey(桑基图),Scatter(散点图),Scatter3D(3D 散点图),ThemeRiver(主题河流图),WordCloud(词云图)。

      而今天我们主要介绍的是地图+散点图,地图+热力图,应用到的函数是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')

结果如下:

1

当is_piecewise = False:

2

当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)
 

 

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')

结果

在这里插入图片描述

  • 14
    点赞
  • 104
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值