如何利用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 相关文章推荐
在 Django/Flask 开发服务器上使用 HTTPS
Jul 03 Python
Python实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 Python
Python pickle类库介绍(对象序列化和反序列化)
Nov 21 Python
探究Python多进程编程下线程之间变量的共享问题
May 05 Python
Python编程实现及时获取新邮件的方法示例
Aug 10 Python
Python实现对百度云的文件上传(实例讲解)
Oct 21 Python
解决python3读取Python2存储的pickle文件问题
Oct 25 Python
Python使用os.listdir()和os.walk()获取文件路径与文件下所有目录的方法
Apr 01 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
python3跳出一个循环的实例操作
Aug 18 Python
使用pandas生成/读取csv文件的方法实例
Jul 09 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连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
php利用header函数下载各种文件
2016/08/24 PHP
PHP实现原生态图片上传封装类方法
2016/11/08 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
jsonp原理及使用
2013/10/28 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
javascript每日必学之多态
2016/02/23 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
python模块之re正则表达式详解
2017/02/03 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
Python 2.x如何设置命令执行的超时时间实例
2017/10/19 Python
django的auth认证,authenticate和装饰器功能详解
2019/07/25 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
Python中的特殊方法以及应用详解
2020/09/20 Python
以设计师精品品质提供快速时尚:PopJulia
2018/01/09 全球购物
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
社团文化节策划书
2014/02/01 职场文书
销售代理协议书
2014/09/30 职场文书
2016教师给学生的毕业寄语
2015/12/04 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
详解Vue的options
2021/05/15 Vue.js
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android