如何利用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中dict与set的使用
Aug 10 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
Jun 09 Python
Python编程之序列操作实例详解
Jul 22 Python
Python跨文件全局变量的实现方法示例
Dec 10 Python
python实现识别手写数字 python图像识别算法
Mar 23 Python
python字典快速保存于读取的方法
Mar 23 Python
python机器学习库scikit-learn:SVR的基本应用
Jun 26 Python
如何用Python来搭建一个简单的推荐系统
Aug 07 Python
Python Django 页面上展示固定的页码数实现代码
Aug 21 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
python交互模式基础知识点学习
Jun 18 Python
Python3爬虫mitmproxy的安装步骤
Jul 29 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 empty,isset,is_null判断比较(差异与异同)
2010/10/19 PHP
php和js实现根据子网掩码和ip计算子网功能示例
2019/11/09 PHP
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
获取URL地址中的文件名和参数的javascript代码
2009/09/02 Javascript
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
JS中Attr的用法详解
2017/10/09 Javascript
除Console.log()外更多的Javascript调试命令
2018/01/24 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
少女风vue组件库的制作全过程
2019/05/15 Javascript
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
Python中使用Beautiful Soup库的超详细教程
2015/04/30 Python
在Django的视图中使用数据库查询的方法
2015/07/16 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
深入解析Python中的__builtins__内建对象
2016/06/21 Python
python实现媒体播放器功能
2018/02/11 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
2018/05/15 Python
Python列表list排列组合操作示例
2018/12/18 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
Django工程的分层结构详解
2019/07/18 Python
使用keras实现densenet和Xception的模型融合
2020/05/23 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
Django如何实现防止XSS攻击
2020/10/13 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
毕业生个人求职自荐信
2014/02/26 职场文书
出国留学计划书
2014/04/27 职场文书
2015年党员公开承诺书范文
2015/01/22 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
结婚通知短信大全
2015/04/17 职场文书
给女朋友的道歉短信
2015/05/12 职场文书