1. 环境——确认环境
python:3.8.1
pycharm:2019.3 64位
pyecharts:1.7.1
!注意 !pyecharts0.5.x和pyecharts1.0.x的环境,V1的版本需要安装的python是3.6.x及以上的。不管你安装了还是没有安装,或者你想换个版本,使用以下命令总是没错的,亲测(-i后面是镜像,也可以百度搜索选择别的镜像,使用本土默认的要么是很慢,要么是报错,简直无力吐槽):
安装pyecharts的命令:pip install pyecharts==版本号 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
2. 可视化准备——获取数据
在可视化之前,首先你得有数据,你的数据从哪里来我就不管了,我这里用的数据是之前已经爬取好的数据,现在存放在了数据库,所以下面的可视化数据都是从数据库中拿到的。(关于爬虫的问题可以参考一下我的上一篇博客:scrapy存到mysql测试用例,但是比较比较基本、比较常规,仅供参考,后续应该会更新改进)
3. pyecharts可视化实现
在正式编写代码之前,你可以先把这些先敲上:
import json
import pymysql
from bs4 import BeautifulSoup
from pyecharts.charts import *
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.components import Table
from pyecharts.globals import ThemeType, ChartType
from pyecharts.options import ComponentTitleOpts
总有一款适合你
还有一个就是记得安装地图:
全球国家地图: echarts-countries-pypkg
中国省级地图:echarts-china-provinces-pypkg
中国市级地图: echarts-china-cities-pypkg
使用命令:pip install 地图安装包文件名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
conn = pymysql.Connect(
host='主机名',#一般是localhost
port=端口号,
user='用户名',
passwd='密码',
db='数据库名',
charset='编码方式'#utf-8的编码注意是写成utf8,中间没有-
)
cursor = conn.cursor()
sql_select = 'select * from 数据库表名'#忘记数据库操作语句或缺少这方面知识的可以去科普一下,不过这里简单,就是查询而已
cursor.execute(sql_select)
visual_data = cursor.fetchall()
刚入门的小白可能不太理解,更多参考这里:python之cursor() — 数据库连接操作以及这里:介绍Python 数据库的Connection、Cursor两大对象
其实前面的这些看不看都无所谓,因为我不会把具体数据代入,毕竟我要记录的是渔,不是教你吃鱼,哈哈哈哈
(Geo()
.add_schema(maptype="china")#这个是显示地图的类型world/china/...
.add("我是图例名称", data_pair=list(zip([地点列表], [对应数据列表])),
type_=ChartType.EFFECT_SCATTER)
.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
.set_global_opts(
title_opts=opts.TitleOpts(title="我是大标题",
title_textstyle_opts=opts.TextStyleOpts(color='#大标题颜色')),
legend_opts=opts.LegendOpts(textstyle_opts=opts.TextStyleOpts(color='#图例名颜色'))
)).render('./test.html')
上面的是非常基本的用法,效果的话,放一张官方图吧:
要保证的一点是,你的地点列表中的点,在读图上都能够找到,那么问题来了,我的地点卡在山旮旯,地图上找不到怎么办?这里分两种情况,一种是你的地点比较少,那么你就可以自己人工插入这些地点的坐标,跟在Geo()屁股后面就行(升级后的版本可以链式调用):.add_coordinate("山旮旯", 110, 30)
,这是点比较少的情况下,还有一种是我要显示的是成百上千个点的情况,这个时候就需要成批导入了,导入之前你要先把数据转成json文件,转成json文件之前,你要把地点名称和坐标位置一一对应起来,所以你就知道要用字典把数据一一对应起来了:
for item in visual_data: # visual_data是全部的数据,item是全部数据中的一条,假设一条item是这样的:('山旮旯',110,30)
address_coordinate[(item[0])] = [float(item[1]), float(item[2])] # 地名和坐标构成字典
with open('address_coords.json', 'w+') as file: # w+是可读可写的意思
json.dump(address_coordinate, file)
json.dump()是把字典转成json文件,不懂的小伙伴还可以点击这里:json.dumps()和json.loads()这一部分呢是放在可视化可视化接口之前的,要说具体一点就是在这个(Geo().....
前面完成,文件转好之后就可以添加了,替换刚刚的.add_coordinate("山旮旯", 110, 30)
:.add_coordinate_json('address_coordinate.json')
其他实例就不一一记录了,因为我觉得其他都还算简单,看文档就行,这个我记录的原因是因为我当时在处理这个地点和坐标的时候卡了很久,翻来翻去又去看文档才整出来的,因此记录一下,让有同样困扰的小伙伴可以参考参考,有什么问题可以一起交流交流