如何利用Pyecharts可视化微信好友


Posted in Python onJuly 04, 2019

前言

最近在研究 pyecharts  的用法,它是 python 的一个可视化工具,然后就想着结合微信来一起玩

不多说,直接看效果:

如何利用Pyecharts可视化微信好友

如何利用Pyecharts可视化微信好友

环境配置

pip install pyecharts
pip install snapshot_selenium
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 wxpy

获取好友

主要是获取好友基本数据,用来做数据可视化

代码如下:

from wxpy import Bot, Chat

class Demo(Chat):

 @staticmethod
 def get_friend():
 bot = Bot()
 friends = bot.friends(update=True)

 friend_data = []
 for friend in friends:
  if friend.sex == 1:
  sex = "男"
  elif friend.sex == 2:
  sex = "女"
  else:
  sex = ""
  friend_dict = {
  "city": friend.city,
  "province": friend.province,
  "sex": sex,
  "signature": friend.signature,

  }
  friend_data.append(friend_dict)

 return friend_data

返回的是微信好友列表,包含好友城市,省份,性别和个性签名等数据。

地理坐标图

地理坐标系组件用于地图的绘制,支持在地理坐标系上绘制散点图,线集。

在 pyecharts  中地理坐标图主要是基于 Geo 模块

def geo_base():
 city_data = get_data()
 geo = Geo(init_opts=opts.InitOpts(theme="vintage"))
 for city in city_data:
 try:
  geo.add_schema(maptype="china", itemstyle_opts=opts.ItemStyleOpts(color="gray"))
  geo.add("微信好友分布地图", [city], type_="effectScatter", symbol_size=10)
  geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
  geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="微信好友分布地图"), )
 except Exception as e:
  print(e)
  pass

 # geo.render("geo.html")
 make_snapshot(driver, geo.render(), "geo.png")

运行完之后会在当前目录生成一个 geo.png 的图片

如何利用Pyecharts可视化微信好友

该图片就是微信好友中国分布地图

热力图

热力图也是基于 Geo 模块

唯一的区别在 add 函数中 type 的为 heatmap

代码如下:

def heat_map():
 city_data = get_data()
 geo = Geo(init_opts=opts.InitOpts(theme="vintage"))
 for city in city_data:
 try:
  geo.add_schema(maptype="广东", itemstyle_opts=opts.ItemStyleOpts(color="gray"))
  geo.add("广东好友热力图", [city], type_="heatmap", symbol_size=10)
  geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
  geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="热力图"), toolbox_opts=opts.ToolboxOpts())
 except :
  pass

 geo.render("heat.html")

比如可以选择某个省份的数据,运行之后的效果:

如何利用Pyecharts可视化微信好友

以上就是微信中的广东好友分布热力图

全国分布图

地图是基于 Map 模块进行扩展

主要用到函数是 add

def add(
 # 系列名称,用于 tooltip 的显示,legend 的图例筛选。
 series_name: str,

 # 数据项 (坐标点名称,坐标点值)
 data_pair: Sequence,

 # 地图类型,具体参考 pyecharts.datasets.map_filenames.json 文件
 maptype: str = "china",

 # 是否选中图例
 is_selected: bool = True,

 # 是否开启鼠标缩放和平移漫游。
 is_roam: bool = True,

 # 当前视角的中心点,用经纬度表示
 center: Optional[Sequence] = None,

 # 当前视角的缩放比例。
 zoom: Optional[Numeric] = 1,

 # 自定义地区的名称映射
 name_map: Optional[dict] = None,

 # 标记图形形状
 symbol: Optional[str] = None,

 # 是否显示标记图形
 is_map_symbol_show: bool = True,

 # 标签配置项,参考 `series_options.LabelOpts`
 label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),

 # 提示框组件配置项,参考 `series_options.TooltipOpts`
 tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,

 # 图元样式配置项,参考 `series_options.ItemStyleOpts`
 itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,
)

代码如下:

def map_base():
 province_data = province_list()
 maps = Map()
 maps.add("", province_data, "china")
 maps.set_global_opts(title_opts=opts.TitleOpts(title="微信好友分布图"), visualmap_opts=opts.VisualMapOpts())

 make_snapshot(driver, geo.render(), "map.png")

运行之后,就是生成文章开头所示的图片,是不是很有趣呀!

词云图

好友城市分布词云图

c = (
  WordCloud()
  .add("", city_list, word_size_range=[15, 50], shape="diamond", word_gap=10)
  .set_global_opts(title_opts=opts.TitleOpts(title="diamond"))
 )
 make_snapshot(driver, c.render(), "world.png")

效果如下:

如何利用Pyecharts可视化微信好友

条形图

先来看下效果:

如何利用Pyecharts可视化微信好友

代码如下:

def bar_datazoom_slider() -> Bar:
 city_data = get_data()
 c = (
 Bar(init_opts=opts.InitOpts(page_title="条形图"))
 .add_xaxis([city[0] for city in city_data])
 .add_yaxis("城市人数", [city[1] for city in city_data])
 .set_global_opts(
  title_opts=opts.TitleOpts(title="好友城市分布条形图"),
  datazoom_opts=[opts.DataZoomOpts(orient="vertical")]
 )
 )
 return c

最后,再提供大家微信头像另一种好玩的方式:

先看图:

如何利用Pyecharts可视化微信好友

除此之外,还能定制文字,将自己想制作的文字,输入即可!

如何利用Pyecharts可视化微信好友

源码下载:点击这里

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
举例讲解Python的Tornado框架实现数据可视化的教程
May 02 Python
Python中集合的内建函数和内建方法学习教程
Aug 19 Python
基于Python_脚本CGI、特点、应用、开发环境(详解)
May 23 Python
机器学习python实战之决策树
Nov 01 Python
Linux下python与C++使用dlib实现人脸检测
Jun 29 Python
Python Pandas对缺失值的处理方法
Sep 27 Python
python3实现弹弹球小游戏
Nov 25 Python
python 实现方阵的对角线遍历示例
Nov 29 Python
如何使用python传入不确定个数参数
Feb 18 Python
keras 多任务多loss实例
Jun 22 Python
分享PyCharm最新激活码(真永久激活方法)不用每月找安装参数或最新激活码了
Dec 27 Python
图神经网络GNN算法
May 11 Python
python 获取等间隔的数组实例
Jul 04 #Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 #Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
Jul 04 #Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
Jul 04 #Python
Python+opencv 实现图片文字的分割的方法示例
Jul 04 #Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 #Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 #Python
You might like
php gzip压缩输出的实现方法
2013/04/27 PHP
PHP中使用json数据格式定义字面量对象的方法
2014/08/20 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
Package.js  现代化的JavaScript项目make工具
2012/05/23 Javascript
JavaScript基础语法让人疑惑的地方小结
2012/05/23 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
3种vue组件的书写形式
2017/11/29 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
python文件操作之目录遍历实例分析
2015/05/20 Python
你应该知道的python列表去重方法
2017/01/17 Python
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
Python 删除连续出现的指定字符的实例
2018/06/29 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
C有"按引用传递"吗
2016/09/06 面试题
实习单位推荐信范文
2013/11/27 职场文书
大学生村官任职感言
2014/01/09 职场文书
企业内部培训方案
2014/02/04 职场文书
《三顾茅庐》教学反思
2014/04/10 职场文书
生产助理岗位职责
2014/06/18 职场文书
教师考核评语大全
2014/12/31 职场文书
教师网络培训心得体会
2016/01/09 职场文书