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

作者:Python编程与实战 时间:2022-04-13 07:34:14 

前言

最近在研究 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可视化微信好友

源码下载:点击这里

来源:https://juejin.im/post/5d1c63e96fb9a07ea9448ba5

标签:pyecharts,可视化,微信
0
投稿

猜你喜欢

  • 修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)

    2024-06-05 09:44:31
  • pycharm打开命令行或Terminal的方法

    2022-12-11 07:07:08
  • Python利用shutil模块实现文件夹的复制删除与裁剪

    2023-12-19 04:16:23
  • MYSQL数据库表设计与优化(二)

    2010-10-25 20:12:00
  • JS创建对象的写法示例

    2024-04-16 08:54:48
  • GO 反射对性能的影响分析

    2024-02-18 06:51:41
  • vue.js实现只弹一次弹框

    2024-05-09 15:08:07
  • 简单的命令查看安装的python版本号

    2022-03-12 17:23:06
  • 解决Vue watch里调用方法的坑

    2024-05-05 09:10:44
  • golang中json操作的完全指南

    2024-04-23 09:35:00
  • 音频处理 windows10下python三方库librosa安装教程

    2023-10-12 08:29:50
  • python线程join方法原理解析

    2021-02-02 04:49:01
  • 用python生成与调用cntk模型代码演示方法

    2023-04-27 10:55:39
  • Python通过命令开启http.server服务器的方法

    2022-10-08 01:42:41
  • python淘宝抢购脚本程序实现

    2023-08-02 11:29:52
  • 利用PyQt5中QLabel组件实现亚克力磨砂效果

    2023-12-13 18:33:04
  • Webots下载安装 + Pycharm联调使用教程

    2023-02-20 23:35:43
  • php从文件夹随机读取文件的方法

    2023-11-21 16:38:35
  • Python实现抓取页面上链接的简单爬虫分享

    2021-03-28 23:03:13
  • thinkphp5加layui实现图片上传功能(带图片预览)

    2023-06-13 01:09:45
  • asp之家 网络编程 m.aspxhome.com