大家都知道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,主要参数说明如下:
attr:标签名称(在例子里面就是地点)
value:数值(在例子里就是流动人员)
visual_range:可视化的数值范围
symbol_size:散点的大小
visual_text_color:标签颜色
is_piecewise :颜色是否分段显示(False为渐变,True为分段)
is_visualmap:是否映射(数量与颜色深浅是否挂钩)
maptype :地图类型,可以是中国地图,省地图,市地图等等
visual_split_number :可视化数值分组
geo_cities_coords:自定义的经纬度
参数介绍完了,那么我们进入主题。首先涉及到地图,那么肯定是得先有地图是吧?所以呢需要地图的朋友们一个个安装吧!不然画出来的图只有散点,没有地图,或者出现地图显示不全等等问题。
$ 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_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)
geo.render( '东莞各个CGI总用户数分布.html')