Python应用之利用pyecharts画中国地图
作者:祢唿 发布时间:2023-05-27 16:45:40
这段时间在爬取了杭州某网站发布的二手房信息,在作图的时候发现在地图呈现上还是有欠缺,这里就把用到的贴出来,提升一下记忆。
之前有接触用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文件即可看到生成的图形
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()
让我们来看看这样画出来的图,就会发现它显示不出来。
原因如下
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://blog.csdn.net/weixin_40041218/article/details/81043669


猜你喜欢
- 本文实例讲述了php 多继承的几种常见实现方法。分享给大家供大家参考,具体如下:class Parent1 { function
- 不知道大家有没有一种感觉,每次当使用numpy数组的时候坐标轴总是傻傻分不清楚,然后就会十分的困惑,每次运算都需要去尝试好久才能得出想要的结
- 在论坛上看到了用Python登录微信并实现自动签到,才了解到一个新的Python库: itchat库文档说明链接在这:  
- 在处理数据的时候,经常会碰到CSV类型的文件,下面将介绍如何读取当前目录下的CSV文件,步骤如下1、获取当前目录所有的CSV文件名称:#创建
- 前言提到太阳系,大家可能会想到哥白尼和他的日心说,或是捍卫、发展日心说的斗士布鲁诺,他们像一缕光一样照亮了那个时代的夜空,对历史感兴趣的小伙
- 数据概况Fashion-mnist经典的MNIST数据集包含了大量的手写数字。十几年来,来自机器学习、机器视觉、人工智能、深度学习领域的研究
- 新手,虽然比较简单的东西,但是弄了我很久。很多不完善的地方,比如锁定用户,同一用户输入错三次密码就会锁定,但是如果在第二第三次换了用户再输入
- 什么是状态机?关于状态机的一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函数组成。状态机通过响应一系列事件而“运行”。每个
- 问题:pycharm无法调用pip安装的包原因:pycharm没有设置解析器解决方法:打开pycharm->File->Sett
- 结合网上的资料,自己亲自的去安装了一次MySQL,安装版本是win7x64 5.7.16。在安装过程中出现并解决了如下问题:“mysql 服
- 本文实例讲述了Python实现通过文件路径获取文件hash值的方法。分享给大家供大家参考,具体如下:import hashlibimport
- 为了吸引更多的用户,设计好一个分享海报还是很有必要的。而小程序要生成一个海报还是有点坑的,下面分享下我们打卡小程序的一些经验。分享海报的效果
- 父传子:1、 在父组件的子组件标签上通过 :传递到子组件的数据名="需要传递的数据"在这里为了大家区分我将父组件中的数据
- power(x, y) 函数,计算 x 的 y 次方。示例:x 和 y 为单个数字:import numpy as npprint(np.p
- 一、背景有些情况下,我们面对实时更新的数据,希望能够在一个窗口中可视化出来,并且能够实时更新,方便我们观察数据的变化,从而进行数据分析,例如
- 大家好,今天给大家带来一篇如何优化time.After函数。最近我在做调度中心2.0的重构。本次重构使用的GO语言开发。在项目中,基本都离不
- 一、软件准备:以下均为截止2005-4-20的最新正式版本PHP(5.1.2):http://www.php.netMySQL(5.0.19
- 1.imutils功能简介imutils是在OPenCV基础上的一个封装,达到更为简结的调用OPenCV接口的目的,它可以轻松的实现图像的平
- 应用背景背景:“由于工作需要可能需要对一些文件进行重命名的处理,但是可能操作起来比较烦,点错了就命名失败或者没带鼠标,用控制板操作起来比较麻
- 玩QQ桌球游戏时,有时候用鼠标控制鼠标指针的微小移动比较费劲儿,所以想写个程序,可以用键盘的上下左右键来控制鼠标的移动,每次只移动一个像素。