如何利用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 相关文章推荐
在Gnumeric下使用Python脚本操作表格的教程
Apr 14 Python
在Django的视图中使用form对象的方法
Jul 18 Python
python算法表示概念扫盲教程
Apr 13 Python
TensorFlow高效读取数据的方法示例
Feb 06 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
Python 实现王者荣耀中的敏感词过滤示例
Jan 21 Python
Python 实现Image和Ndarray互相转换
Feb 19 Python
Python小整数对象池和字符串intern实例解析
Mar 21 Python
python实现图片转换成素描和漫画格式
Aug 19 Python
两行代码解决Jupyter Notebook中文不能显示的问题
Apr 24 Python
Python关于OS文件目录处理的实例分享
May 23 Python
Python 匹配文本并在其上一行追加文本
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
第十二节--类的自动加载
2006/11/16 PHP
PHP的SQL注入过程分析
2012/01/06 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
PHP经典算法集锦【经典收藏】
2016/09/14 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
2010/09/19 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
js检测输入内容全为空格的方法
2014/05/03 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
移动端界面的适配
2017/01/11 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
Python正则表达式教程之一:基础篇
2017/03/02 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
python conda操作方法
2019/09/11 Python
python中count函数简单的实例讲解
2020/02/06 Python
python可视化分析的实现(matplotlib、seaborn、ggplot2)
2021/02/03 Python
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
5个HTML5的常用本地存储方式详解与介绍
2021/03/27 HTML / CSS
地震捐款倡议书
2014/08/29 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
《日月潭》教学反思
2016/02/20 职场文书
Java常用函数式接口总结
2021/06/29 Java/Android
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python
vue打包时去掉所有的console.log
2022/04/10 Vue.js