如何用Python制作微信好友个性签名词云图

制作微信好友个性签名词云图是一项很有趣的Python项目。下面是详细的制作攻略。

1. 准备数据

要制作词云图,首先需要获取微信好友的签名数据。可以使用itchat这个Python库来获取微信好友信息。使用以下代码获取微信好友信息并将签名数据保存到文本文件中:

import itchat

# 登录微信
itchat.auto_login()

# 获取好友列表(含详细信息)
friends = itchat.get_friends(update=True)

# 从好友列表中提取签名信息
signature_list = []
for friend in friends:
    signature = friend["Signature"].strip().replace("emoji", "")
    if signature != "":
        signature_list.append(signature)

# 将签名信息保存到文件中
with open("signature.txt", "w", encoding="utf-8") as f:
    for signature in signature_list:
        f.write(signature + "\n")

2. 分词

接下来需要将签名数据进行分词处理。这里可以使用jieba这个Python库。使用以下代码进行分词:

import jieba

# 读取签名数据
with open("signature.txt", "r", encoding="utf-8") as f:
    text = f.read()

# 分词
word_list = jieba.cut(text)

# 将分词结果保存到文件中
with open("word_list.txt", "w", encoding="utf-8") as f:
    for word in word_list:
        f.write(word + " ")

3. 生成词云图

接下来需要使用词云生成库wordcloud来生成词云图。使用以下代码生成词云图:

import matplotlib.pyplot as plt
from wordcloud import WordCloud

# 读取分词结果
with open("word_list.txt", "r", encoding="utf-8") as f:
    text = f.read()

# 生成词云图
wordcloud = WordCloud().generate(text)

# 显示词云图
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

# 保存词云图
wordcloud.to_file("signature_wordcloud.png")

以上是制作微信好友个性签名词云图的完整攻略。下面给出两个示例说明。

示例一

如果你想定制词云图背景颜色和字体,请使用以下代码:

import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import jieba

# 读取签名数据
with open("signature.txt", "r", encoding="utf-8") as f:
    text = f.read()

# 分词
word_list = jieba.cut(text)

# 读取自定义图片
mask = np.array(Image.open("mask.png"))

# 设置字体路径
font_path = "msyh.ttc"

# 生成词云图
wordcloud = WordCloud(font_path=font_path, mask=mask,
                      background_color="white", mode="RGBA").generate(text)
color = ImageColorGenerator(mask)

# 显示词云图
plt.imshow(wordcloud.recolor(color_func=color), interpolation="bilinear")
plt.axis("off")
plt.show()

# 保存词云图
wordcloud.to_file("signature_wordcloud_custom.png")

示例二

如果你希望词云图中的词语按照字体大小排序,请使用以下代码:

import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import jieba

# 读取签名数据
with open("signature.txt", "r", encoding="utf-8") as f:
    text = f.read()

# 分词
word_list = jieba.cut(text)

# 读取自定义图片
mask = np.array(Image.open("mask.png"))

# 设置字体路径
font_path = "msyh.ttc"

# 生成词云图
wordcloud = WordCloud(font_path=font_path, mask=mask, max_words=100,
                      max_font_size=200, background_color="white", mode="RGBA").generate(text)
color = ImageColorGenerator(mask)

# 显示词云图
fig, ax = plt.subplots()
ax.imshow(wordcloud.recolor(color_func=color), interpolation="bilinear")
ax.axis("off")

# 排序
words = list(wordcloud.words_.keys())
counts = list(wordcloud.words_.values())
idx = np.argsort(np.array(counts))[::-1]

# 生成legend
for i, w in enumerate(np.array(words)[idx][:10]):
    ax.text(250, 100+i*50, w, fontsize=20, color="black", ha="center", va="center")

plt.show()

# 保存词云图
wordcloud.to_file("signature_wordcloud_sorted.png")

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何用Python制作微信好友个性签名词云图 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 解决python中 f.write写入中文出错的问题

    要在Python中写入中文,通常需要指定文件的编码格式。如果不指定编码格式,则默认为系统默认编码格式,这可能导致中文字符无法正确写入文件中,或者在读取文件时出现乱码。 为了解决这个问题,我们建议使用io模块提供的open()方法来打开文件,并使用encoding参数来指定编码格式。以下是详细步骤: 步骤1:导入io模块 import io 步骤2:使用io模…

    python 2023年5月14日
    00
  • pandas.read_csv参数详解(小结)

    下面是对于“pandas.read_csv参数详解(小结)” 的详细攻略: pandas.read_csv参数详解 基本参数 pandas.read_csv(file_path: str, delimiter: str, header: Union[int, List[int]], names: Optional[List[str]], index_col:…

    python 2023年5月14日
    00
  • Python画图工具Matplotlib库常用命令简述

    我来为您详细讲解“Python画图工具Matplotlib库常用命令简述”的完整攻略。 一、Matplotlib库简介 Matplotlib是Python中常用的数据可视化工具,它提供了许多高质量的2D和3D图表功能,能够创建折线图、散点图、柱状图、饼图、3D图等多种图形。Matplotlib库的核心是pyplot模块,该模块提供了与MATLAB类似的命令语…

    python 2023年5月14日
    00
  • Pandas修改DataFrame列名的两种方法实例

    下面是” Pandas修改DataFrame列名的两种方法实例”的完整攻略。 1. 查看DataFrame的列名 在修改DataFrame的列名之前,首先需要通过以下代码查看DataFrame的列名: import pandas as pd # 创建DataFrame df = pd.DataFrame({‘A’: [1, 2], ‘B’: [3, 4]})…

    python 2023年5月14日
    00
  • pandas dataframe的合并实现(append, merge, concat)

    下面是Pandas DataFrame的合并实现攻略: 1. Pandas DataFrame合并操作的几种实现方法 Pandas DataFrame合并操作主要包括append、merge和concat三种方法。这三种方法的具体实现方式和适用场景有所不同,下面将分别进行介绍。 1.1 Pandas DataFrame中的append方法 append方法可…

    python 2023年5月14日
    00
  • 聊聊python dropna()和notnull()的用法区别

    聊聊Python dropna()和notnull()的用法区别 引言 在使用Pandas进行数据处理和分析时,我们常常需要过滤掉数据中带有缺失值的行或列。在Pandas中,我们通常会使用 dropna() 和 notnull() 这两个方法来实现这个目的。本篇文章将会讲解这两个方法的用法,并且对它们的区别做出详细的解析。 dropna()方法 什么是dro…

    python 2023年6月13日
    00
  • Python教程pandas数据分析去重复值

    以下是Python教程pandas数据分析去重复值的完整攻略。 pandas数据分析去重复值 Pandas数据框架简介 Pandas是一个Python库,提供数据分析功能。Pandas中最主要的数据结构是“DataFrame”,它是由多个列组成的二维表格。 在Pandas中,可以通过多种方式来创建DataFrame对象,比如从文件、从字典、从列表等等。一旦创…

    python 2023年5月14日
    00
  • 在Python-Pandas中对数据框架的所有或某些列进行循环或迭代

    在Python-Pandas中,对数据框架的所有或某些列进行循环或迭代可以通过for循环来实现。下面是详细的攻略: 对所有列循环 (1)使用df.columns来获得数据框架的列名 (2)利用for循环遍历列名,然后通过df[column_name]来访问每一列数据 下面是示例代码: import pandas as pd df = pd.read_csv(…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部