如何利用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模块学习 datetime介绍
Aug 27 Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
Python内置模块logging用法实例分析
Feb 12 Python
python中返回矩阵的行列方法
Apr 04 Python
pthon贪吃蛇游戏详细代码
Jan 27 Python
Python常见的pandas用法demo示例
Mar 16 Python
Django-Model数据库操作(增删改查、连表结构)详解
Jul 17 Python
python爬取网易云音乐热歌榜实例代码
Aug 07 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
Feb 03 Python
python 多线程爬取壁纸网站的示例
Feb 20 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
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
JavaScript 基础篇之运算符、语句(二)
2012/04/07 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
jquery.idTabs 选项卡使用示例代码
2014/09/03 Javascript
jQuery对val和atrr("value")赋值的区别介绍
2014/09/26 Javascript
javascript中clone对象详解
2014/12/03 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
Angular 理解module和injector,即依赖注入
2016/09/07 Javascript
简单实现bootstrap导航效果
2017/02/07 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
2017/05/18 Javascript
微信小程序中进行地图导航功能的实现方法
2018/06/29 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
IDEA安装vue插件图文详解
2019/09/26 Javascript
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
python如何使用正则表达式的前向、后向搜索及前向搜索否定模式详解
2017/11/08 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
详解Python中import机制
2020/09/11 Python
HTML5操作WebSQL数据库的实例代码
2017/08/26 HTML / CSS
吃透移动端 Html5 响应式布局
2019/12/16 HTML / CSS
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
C#公司笔试题
2014/03/28 面试题
数控机械专业个人的自我评价
2014/01/02 职场文书
小学三年级数学教学反思
2014/01/31 职场文书
保密工作实施方案
2014/02/24 职场文书
人力管理专业毕业生求职信
2014/02/27 职场文书
人力资源主管职责范本
2014/03/05 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
小学二年级学生评语
2014/04/21 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server