你知道你的微信好友可视化后是什么样子吗?

2024-05-15 14:08

本文主要是介绍你知道你的微信好友可视化后是什么样子吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据分析和可视化是一个比较有意思的方向,可做的点有很多。最近看到一篇文章是玩了玩把自己的微信好友信息进行了可视化,结合了 pyecharts 和 wxpy 这两个库实现的,推荐给大家看看~


转载来源

公众号:Python 编程与实战

阅读本文大概需要 6 分钟。


前言

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

不多说,直接看效果:

640?wx_fmt=gif


640?wx_fmt=gif
条形图.gif

环境配置

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 的图片

640?wx_fmt=png
geo.png

热力图

热力图也是基于 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")

运行之后的效果:

640?wx_fmt=png
热力图.png

全国分布图

地图是基于 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=[1550], shape="diamond", word_gap=10)
            .set_global_opts(title_opts=opts.TitleOpts(title="diamond"))
        )
        make_snapshot(driver, c.render(), "world.png")

效果如下:

640?wx_fmt=png

条形图

 

先来看下效果:

640?wx_fmt=gif
条形图.gif

代码如下:

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
    city_data = get_data()
    c = (
        Bar(init_opts=opts.InitOpts(page_title="条形图"))
        .add_xaxis([city[0for city in city_data])
        .add_yaxis("城市人数", [city[1for city in city_data])
        .set_global_opts(
            title_opts=opts.TitleOpts(title="好友城市分布条形图"),
            datazoom_opts=[opts.DataZoomOpts(orient="vertical")]
        )
    )
    return c

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

效果如下:

640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png

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

640?wx_fmt=png

公众号后台回复 image 即可获取该程序

推荐阅读

1

跟繁琐的命令行说拜拜!Gerapy分布式爬虫管理框架来袭!

2

跟繁琐的模型说拜拜!深度学习脚手架 ModelZoo 来袭!

3

只会用Selenium爬网页?Appium爬App了解一下

4

妈妈再也不用担心爬虫被封号了!手把手教你搭建Cookies池

崔庆才

静觅博客博主,《Python3网络爬虫开发实战》作者

隐形字

个人公众号:进击的Coder

640?wx_fmt=gif 640?wx_fmt=jpeg 640?wx_fmt=gif

长按识别二维码关注


好文和朋友一起看~

这篇关于你知道你的微信好友可视化后是什么样子吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/992029

相关文章

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

使用Folium在Python中进行地图可视化的操作指南

《使用Folium在Python中进行地图可视化的操作指南》在数据分析和可视化领域,地图可视化是一项非常重要的技能,它能够帮助我们更直观地理解和展示地理空间数据,Folium是一个基于Python的地... 目录引言一、Folium简介与安装1. Folium简介2. 安装Folium二、基础使用1. 创建