如何利用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中基于生成器的状态机
Apr 13 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
使用Python神器对付12306变态验证码
Jan 05 Python
Python爬虫之模拟知乎登录的方法教程
May 25 Python
利用numpy实现一、二维数组的拼接简单代码示例
Dec 15 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
深入理解Python异常处理的哲学
Feb 01 Python
numpy concatenate数组拼接方法示例介绍
May 27 Python
Pycharm安装第三方库失败解决方案
Nov 17 Python
Python获取指定网段正在使用的IP
Dec 14 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 Python
Python中OpenCV实现简单车牌字符切割
Jun 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 项目的方法
2007/01/02 PHP
php microtime获取浮点的时间戳
2010/02/21 PHP
php初始化对象和析构函数的简单实例
2014/03/11 PHP
thinkphp模板输出技巧汇总
2014/11/24 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
PHP实现常用排序算法的方法
2020/02/05 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
jQuery使用prepend()方法在元素前添加内容用法实例
2015/03/26 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
pace.js和NProgress.js两个加载进度插件的一点小总结
2018/01/31 Javascript
浅谈开发eslint规则
2018/10/01 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
vue-router之实现导航切换过渡动画效果
2019/10/31 Javascript
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
Python三级菜单的实例
2017/09/13 Python
django站点管理详解
2017/12/12 Python
Python matplotlib画图实例之绘制拥有彩条的图表
2017/12/28 Python
用python写测试数据文件过程解析
2019/09/25 Python
python通过实例讲解反射机制
2019/10/17 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
国际商务系学生个人的自我评价
2013/11/26 职场文书
销售助理岗位职责
2014/02/21 职场文书
六一节目主持词
2014/04/01 职场文书
银行先进个人总结
2015/02/15 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
Python机器学习之基础概述
2021/05/19 Python