Python用pyecharts绘制中国各地级市gdp分布点图

Python用pyecharts绘制中国各地级市gdp分布点图_第1张图片
把一些地域性比较明显的数据显示在一张地图上,远比给别人一个 Excel 文件好得多,或者其他的呈现方式要更好。如上图,全国各个地级市的GDP用地图散点图呈现其实更加明了。
python里面有一个pyecharts包,里面有一个Geo组件,就支持在地理坐标系上绘制散点图。

安装pyecharts

打开命令窗口,使用pip安装。

pip install pyechart

绘制地图除了pyecharts包,还需要导入相应的地图文件包,同样是使用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
  • 全球国家地图: echarts-countries-pypkg :世界地图和 213 个国家,包括中国地图
  • 中国省级地图: echarts-china-provinces-pypkg :23 个省,5 个自治区
  • 中国市级地图: echarts-china-cities-pypkg :370 个中国城市
  • 中国县区级地图: echarts-china-counties-pypkg :2882 个中国县、区
  • 中国区域地图: echarts-china-misc-pypkg :11 个中国区域地图,比如华南、华北。

使用Geo组件

pyecharts是一个功能很全面的包,其中有一个Geo组件,该组件是地理坐标系组件,用于地图的绘制,支持在地理坐标系上绘制散点图。地理坐标系就是地点的经纬度。所以如果要用pyecharts在地图上绘制散点图,就需要用到地点的经纬度。

我们先来看一下Geo组件用来绘制散点的参数。

参数 含义
attr 标签名称(在例子里面就是地点)
value 数值(在例子里就是GDP)
visual_range 可视化的数值范围
symbol_size 散点的大小
visual_text_color 标签颜色
is_piecewise 颜色是否分段显示(False为渐变,True为分段)
is_visualmap 是否映射(数量与颜色深浅是否挂钩)
maptype 地图类型,可以是中国地图,省地图,市地图等等
visual_split_number 可视化数值分组
geo_cities_coords 自定义的经纬度

了解到这些参数之后我们就可以用pyecharts来绘制地图了。
我们先导入Geo组件和pandas库,用来读取我们的数据表格。

from pyecharts import Geo
import pandas as pd 

我们先用pandas读取我们的数据,关于全国各个地级市2016年的GDP(数据有缺失)。

df = pd.read_excel('各省市经纬度.xlsx')
df.head()

Python用pyecharts绘制中国各地级市gdp分布点图_第2张图片
我们可以看到每一个地级市对应的经纬度和GDP。
我们首先建立一个Geo坐标系,设定好图片标题,以及图片大小和背景色。

geo = Geo("2016年全国各地级市GDP(万亿)",#设置地图标题
           title_color="#fff",#设置标题颜色为白色
           title_pos="center",#标题位置在中间
           width=1200,#图片宽度
           height=600,#图片长度
           background_color='#404a59'#设置图片背景颜色
          )

这时我们已经建立了一个地图坐标系,我们要向里面传入绘制散点的参数。这之前我们要先了解geo_cities_coords这个参数。
geo_cities_coords这个参数比较特殊,它的参数是一个字典,每一组是这样写的:城市名:[经度,纬度]。如:
Python用pyecharts绘制中国各地级市gdp分布点图_第3张图片
geo_cities_coords的key值与attr 是一致的。

了解到这些那我们现在构建参数。

attr = list(df['市'])
value = list(df['GDP(万亿)'])
geo_cities_coords = {df.iloc[i]['市']:[df.iloc[i]['经度'], df.iloc[i]['纬度']] for i in range(len(df))}

参数构建好了,我们往我们构建好的地理坐标系传入我们构建好的参数。利用add传进去参数。

geo.add("", #标题,构建坐标系的时候已经写好,不需要设置,设为空
        attr,#城市名
        value,#各城市的GDP
        visual_range=[0, 28000],#可视化深浅的范围
        visual_text_color="#fff",#标签的颜色
        is_piecewise=True,#设置颜色分段显示
        visual_split_number=10,#设置10个不同的组
        symbol_size=7.5,#设置散点大小为7.5
        is_visualmap=True,#设置颜色与value一一对应,value越高,颜色越深
        geo_cities_coords=geo_cities_coords#设置散点所在的经纬度
       )

Python用pyecharts绘制中国各地级市gdp分布点图_第4张图片
我们通过attr,value,geo_cities_coords传入城市名,GDP,经纬度参数。我们可以看到绘制出来的图中散点分成了10组,每一组代表了2800万亿元人民币。颜色越深,代表GDP越高,颜色越浅,GDP越低。
我们要把图片保存下来,在我们绘制好的图片的右侧,有三个图标,有一个下载的标志,点击这个标志,可以将图片下载为png格式的。
Python用pyecharts绘制中国各地级市gdp分布点图_第5张图片
除此之外,我们还可以将图片保存为html格式,可以实现更好的可视化操作。
我们可以使用render将图片保存为html格式。

geo.render(path="2016年全国各地级市GDP(万亿).html")

我们可以在文件夹找到这个html文件,我们打开它。可以使用鼠标放大缩小,也可以点击不同的分组呈现不同分组的GDP。

可以看到保存为html格式的话其实可以做更多的可视化操作。
我们在左下角的图例里只选中0-2800。
Python用pyecharts绘制中国各地级市gdp分布点图_第6张图片
可以看到全国各个地级市的GDP还是0-2800万亿元人民币的最多。

而我们只选择最上面两个的时候。
Python用pyecharts绘制中国各地级市gdp分布点图_第7张图片
我们可以看到全国2016年GDP超过22400万亿元人民币的只有两个城市,分别是北京和上海,当然,这两个城市也不算地级市。

如果我们把is_visualmap设置为False,这时候颜色与GDP就没有关系了,所有的点只有一个颜色,我们的图就是全国各个地级市的地理位置。
Python用pyecharts绘制中国各地级市gdp分布点图_第8张图片
PS:需要从最开始重新构建一个新的Geo地理坐标系,不然图片不会变化。
如果我们把is_piecewise设置为False,这时候颜色就不是分段显示了,而是按照GDP的大小颜色渐变显示。保存为html格式同样可以进行可视化操作。

这样我们就用pyecharts绘制了全国各个地级市的GDP在地图上的散点图了。

你可能感兴趣的:(学习交流)