资讯专栏INFORMATION COLUMN

如何利用Python pyecharts画中国地图

89542767 / 985人阅读


  python使用场景还是很多的,特别是在实现自动化的办公阶段,python的用处是比较的大的,那么,今天又有一个比较新奇的想法,如何使用python中的pyecharts去画一个中国地图呢?下面给各位读者做一个详细介绍。


  在这一个月的时间里,利用网络爬虫爬取了杭州所有二手房的一个数据,在作图的时候发现在地图呈现上还是有欠缺,这里就把用到的贴出来,提升一下记忆。


  之前有接触用Basemap绘制地图,但是在涉及到中国行政划分上感觉不是很方便。Echarts在数据可视化上应用比较广泛,这里采用pyecharts生成echarts风格的图表。


  环境:pycharm;python3.6;


  1、安装


  pycharts包的安装

  pip install pyecharts


  在绘制地图时,需要导入相应的地图文件包


  全球国家地图:echarts-countries-pypkg(1.9MB)


  中国省级地图:echarts-china-provinces-pypkg(730KB)


  中国市级地图:echarts-china-cities-pypkg(3.8MB)


  建议绘图之前就装好,安装方法跟安装工具包的方法一致:


  pip install echarts-countries-pypkg;
  pip install echarts-china-provinces-pypkg
  pip install echarts-china-cities-pypkg

  2、绘制地图


  from pyecharts import Map
  #attr,value要显示的数值
  value=[20,100]
  attr=['余杭区','萧山区']
  #图框的基本特性
  m=Map('杭州地图示例图',width=600,height=400)
  #添加数据到图框中
  m.add('',attr,value,maptype=u'杭州',visual_range=[0,100],is_visualmap=True,visual_text_color='#000')
  #show_config()打印输出图表的所有配置项
  m.show_config()
  #render()生成.html文件
  m.render()
  m=Map(title=”“,subtitle=”“,**kwargs)指定图框基本特性。
  m.add(**kwargs)主要用于数据呈现,依次为图例、x,y。
  attr:list,是地级市名的列表,你要对哪个区域进行标注,就写入对应的区域。注意里面的名字要规整,不然后面就标记不成功。
  value:list,是attr各区对应的数值。
  maptype=u’杭州’:指定需要绘制的地区的区域。可以是省级地名,也可以是市级地名。
  visual_range=[0,100]:指定地图的颜色范围区间,默认是[0,100]。这里主要是参考y值的范围,便于生成有颜色差的图形。
  is_label_show=True:显示每个点的值x
  m.show_config():会在终端打印出图表文件的所有配置项。
  m.render():默认在当前文件生成一个render.html文件


  通过浏览器打开生成的render.html文件即可看到生成的图形

01.png

02.png

  pyecharts的坑---“画图不显示“


  关于Pyecharts画图,图却不显示出来的问题,出问题可能有好几种原因。可能是版本问题、包没下全等等,在这边说的是一个很坑的问题,博主因为这个白白浪费了好几个小时和精力。


  最近在做数据挖掘课设,用pandas处理数据,十分的方便,没错,图不显示就是因为它。


  下面为大家举个例子


  假设我们有一组数据,转为DataFrame或者Series后经过多种处理,最终从中提取出来,想要用pyecharts做一个图,于是就会出现文章标题这样的错误。


  from pyecharts.charts import Bar
  from pyecharts import options as opts
  import pandas as pd
  x=[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]
  y=[3,8,7,18,28,48,59,44,61,80,69,59,63,59,64,46,64,55,50,62,57,51,44,34,34,34,40,34,39,41,22,43,30,23]
  pdx=pd.Series(x)
  pdy=pd.Series(y)
  x_value=pdx.values
  y_value=pdy.values
  #Pyecharts 1.9.0所以支持链式表达
  bar=(
  Bar()
  .add_xaxis(x_value)
  .add_yaxis("y值",y_value)
  .set_global_opts(title_opts=opts.TitleOpts(title="标题"))
  )
  bar.render()


  让我们来看看这样画出来的图,就会发现它显示不出来。

03.png

  原因如下


   print(x_value)
  print(type(y_value))
  print(type(y_value[0]))

  打印出来之后就会发现:


  [16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39


  40 41 42 43 44 45 46 47 48 49]


  <class'numpy.ndarray'>


  <class'numpy.int64'>


  列表中的数据类型为numpy.int64


  而pyecharts要求int类型的数据,所以画的柱状图无法显示数据。


  正确的做法就是把数据全部转为int类型,或者不用pandas处理数据…


  我尝试着在转为datafram、或series时将类型转为int,但它还是会自动转为numpy.int32。


  pdx=pd.Series(x,dtype=int)
  pdy=pd.Series(y,dtype=int)


  print类型


  <class'numpy.ndarray'>
  <class'numpy.int32'>

  以上就为大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127979.html

相关文章

  • [python][jupyter notebook]之菜鸟安装[pyecharts]中Geo或Map

    摘要:作为菜鸟,在学习使用模块进入的时候,又遇到了问题那就是,可以使用一下代码,导入和模块,但是弄了之后看不见地图。例如所以呢,只能自己去上下载第三方包,自己在中安装了。这位大神也给了一些解决办法,需要的请参考 作为菜鸟,在学习使用pyecharts模块进入jupyter notebook的时候,又遇到了问题——那就是,可以使用一下代码,导入Geo和Map模块,但是弄了之后看不见地图。 fr...

    Jeffrrey 评论0 收藏0
  • Python pyecharts绘制地理图表练习方法

      小编写这篇文章的主要目的,是给大家去做一个介绍,介绍关于Python pyecharts绘制地理图标的方法,下面会给大家去罗列一个一个的步骤,将这些具体的内容,给大家去一一的展示出来,就具体的内容,下面就给大家详细解答下。  炫酷地图  前期我们介绍了很多的地图模板,不管是全球的还是中国的,其实我感觉都十分的炫酷,哈哈哈,可是还有更加神奇的,更加炫酷的地图模板,下面让我们一起一饱眼福吧!  3...

    89542767 评论0 收藏0
  • Python可视化神器pyecharts绘制箱型图的方法

      小编写这篇文章的主要目的,主要是给大家做一个详细的介绍,介绍的内容是Python可视化神器,这个神器指的是pyecharts,那么,怎么样利用这种语言去进行绘制箱型图呢?下面小编就给大家详细解答下。  概念  后面的图形都是一些专业的统计图形,当然也会是我们可视化的对象。  箱形图(Box-plot)又称为盒须图、盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。...

    89542767 评论0 收藏0
  • 如何使用Python pyecharts绘制漏斗?请仔细阅读下文

      小编写这篇文章的主要目的,主要是来给大家去做出一个相关性的介绍,介绍的内容主要还是涉及到Python pyecharts,主要是利用Python pyecharts去绘制漏斗,那么,具体要怎么绘制呢?下面给大家详细解答下。  漏斗图  漏斗图是由Light等在1984年提出,一般以单个研究的效应量为横坐标,样本含量为纵坐标做的散点图。效应量可以为RR、OR和死亡比或者其对数值等。理论上讲,被纳...

    89542767 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<