如何利用Pyecharts可视化微信好友

时间:2022-10-07 21:48:41

前言

最近在研究 pyecharts  的用法,它是 python 的一个可视化工具,然后就想着结合微信来一起玩

不多说,直接看效果:

如何利用Pyecharts可视化微信好友

如何利用Pyecharts可视化微信好友

环境配置

  1. pip install pyecharts
  2. pip install snapshot_selenium
  3. pip install echarts-countries-pypkg
  4. pip install echarts-china-provinces-pypkg
  5. pip install echarts-china-cities-pypkg
  6. pip install echarts-china-counties-pypkg
  7. pip install wxpy

获取好友

主要是获取好友基本数据,用来做数据可视化

代码如下:

  1. from wxpy import Bot, Chat
  2.  
  3. class Demo(Chat):
  4.  
  5. @staticmethod
  6. def get_friend():
  7. bot = Bot()
  8. friends = bot.friends(update=True)
  9.  
  10. friend_data = []
  11. for friend in friends:
  12. if friend.sex == 1:
  13. sex = "男"
  14. elif friend.sex == 2:
  15. sex = "女"
  16. else:
  17. sex = ""
  18. friend_dict = {
  19. "city": friend.city,
  20. "province": friend.province,
  21. "sex": sex,
  22. "signature": friend.signature,
  23.  
  24. }
  25. friend_data.append(friend_dict)
  26.  
  27. return friend_data

返回的是微信好友列表,包含好友城市,省份,性别和个性签名等数据。

地理坐标图

地理坐标系组件用于地图的绘制,支持在地理坐标系上绘制散点图,线集。

在 pyecharts  中地理坐标图主要是基于 Geo 模块

  1. def geo_base():
  2. city_data = get_data()
  3. geo = Geo(init_opts=opts.InitOpts(theme="vintage"))
  4. for city in city_data:
  5. try:
  6. geo.add_schema(maptype="china", itemstyle_opts=opts.ItemStyleOpts(color="gray"))
  7. geo.add("微信好友分布地图", [city], type_="effectScatter", symbol_size=10)
  8. geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
  9. geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="微信好友分布地图"), )
  10. except Exception as e:
  11. print(e)
  12. pass
  13.  
  14. # geo.render("geo.html")
  15. make_snapshot(driver, geo.render(), "geo.png")

运行完之后会在当前目录生成一个 geo.png 的图片

如何利用Pyecharts可视化微信好友

该图片就是微信好友中国分布地图

热力图

热力图也是基于 Geo 模块

唯一的区别在 add 函数中 type 的为 heatmap

代码如下:

  1. def heat_map():
  2. city_data = get_data()
  3. geo = Geo(init_opts=opts.InitOpts(theme="vintage"))
  4. for city in city_data:
  5. try:
  6. geo.add_schema(maptype="广东", itemstyle_opts=opts.ItemStyleOpts(color="gray"))
  7. geo.add("广东好友热力图", [city], type_="heatmap", symbol_size=10)
  8. geo.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
  9. geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="热力图"), toolbox_opts=opts.ToolboxOpts())
  10. except :
  11. pass
  12.  
  13. geo.render("heat.html")

比如可以选择某个省份的数据,运行之后的效果:

如何利用Pyecharts可视化微信好友

以上就是微信中的广东好友分布热力图

全国分布图

地图是基于 Map 模块进行扩展

主要用到函数是 add

  1. def add(
  2. # 系列名称,用于 tooltip 的显示,legend 的图例筛选。
  3. series_name: str,
  4.  
  5. # 数据项 (坐标点名称,坐标点值)
  6. data_pair: Sequence,
  7.  
  8. # 地图类型,具体参考 pyecharts.datasets.map_filenames.json 文件
  9. maptype: str = "china",
  10.  
  11. # 是否选中图例
  12. is_selected: bool = True,
  13.  
  14. # 是否开启鼠标缩放和平移漫游。
  15. is_roam: bool = True,
  16.  
  17. # 当前视角的中心点,用经纬度表示
  18. center: Optional[Sequence] = None,
  19.  
  20. # 当前视角的缩放比例。
  21. zoom: Optional[Numeric] = 1,
  22.  
  23. # 自定义地区的名称映射
  24. name_map: Optional[dict] = None,
  25.  
  26. # 标记图形形状
  27. symbol: Optional[str] = None,
  28.  
  29. # 是否显示标记图形
  30. is_map_symbol_show: bool = True,
  31.  
  32. # 标签配置项,参考 `series_options.LabelOpts`
  33. label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),
  34.  
  35. # 提示框组件配置项,参考 `series_options.TooltipOpts`
  36. tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
  37.  
  38. # 图元样式配置项,参考 `series_options.ItemStyleOpts`
  39. itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,
  40. )

代码如下:

  1. def map_base():
  2. province_data = province_list()
  3. maps = Map()
  4. maps.add("", province_data, "china")
  5. maps.set_global_opts(title_opts=opts.TitleOpts(title="微信好友分布图"), visualmap_opts=opts.VisualMapOpts())
  6.  
  7. make_snapshot(driver, geo.render(), "map.png")

运行之后,就是生成文章开头所示的图片,是不是很有趣呀!

词云图

好友城市分布词云图

  1. c = (
  2. WordCloud()
  3. .add("", city_list, word_size_range=[15, 50], shape="diamond", word_gap=10)
  4. .set_global_opts(title_opts=opts.TitleOpts(title="diamond"))
  5. )
  6. make_snapshot(driver, c.render(), "world.png")

效果如下:

如何利用Pyecharts可视化微信好友

条形图

先来看下效果:

如何利用Pyecharts可视化微信好友

代码如下:

  1. def bar_datazoom_slider() -> Bar:
  2. city_data = get_data()
  3. c = (
  4. Bar(init_opts=opts.InitOpts(page_title="条形图"))
  5. .add_xaxis([city[0] for city in city_data])
  6. .add_yaxis("城市人数", [city[1] for city in city_data])
  7. .set_global_opts(
  8. title_opts=opts.TitleOpts(title="好友城市分布条形图"),
  9. datazoom_opts=[opts.DataZoomOpts(orient="vertical")]
  10. )
  11. )
  12. return c

最后,再提供大家微信头像另一种好玩的方式:

先看图:

如何利用Pyecharts可视化微信好友

除此之外,还能定制文字,将自己想制作的文字,输入即可!

如何利用Pyecharts可视化微信好友

源码下载:点击这里

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

原文链接:https://juejin.im/post/5d1c63e96fb9a07ea9448ba5