当前位置: 首页> 游戏> 手游 > 详细分析python生成词云图的基本知识(附多个Demo)

详细分析python生成词云图的基本知识(附多个Demo)

时间:2025/7/10 13:43:18来源:https://blog.csdn.net/weixin_47872288/article/details/142107964 浏览次数:0次

目录

  • 1. 基本知识
  • 2. Demo
    • 2.1 纯文本
    • 2.2 词频
    • 2.3 自定义形状
    • 2.4 自定义颜色
    • 2.5 自定义字体
    • 2.6 html文件

1. 基本知识

一种数据可视化工具,主要用于显示文本数据中的关键词,通过字体大小、颜色等维度,词云图直观地展示了文本中各个词语出现的频率或重要性

  • 常用于数据分析、自然语言处理、市场营销等领域
  • 单词出现的频率越高,其对应的字体大小越大、颜色越深,使得重要词语在视觉上更加突出

基本的应用场景如下:

  • 文本分析:从大量文本中提取最重要的关键词,快速识别文本主题
  • 社交媒体分析:分析推文、评论等,揭示热点话题
  • 市场营销: 分析产品评论或用户反馈,提取用户关注的关键词
  • SEO 分析:分析网站上的关键词,优化搜索引擎表现

先安装API库:pip install wordcloud

基本的API如下:

  • WordCloud()
    该类是生成词云的核心类,主要用于配置词云的样式和行为
    主要参数:
    width:图像宽度,默认为400
    height: 图像高度,默认为200
    max_words:显示的最大单词数,默认为200
    background_color: 背景颜色,默认为白色 (“white”)
    colormap: 控制词云中单词颜色的色彩映射,默认使用 “viridis”
    font_path:设置字体的路径。如果需要使用中文字体,必须指定支持中文的字体路径
    mask:词云形状的遮罩图像,使用二值化图像定义形状区域
    contour_width: 轮廓线宽度。默认为0,表示没有轮廓
    contour_color: 轮廓线颜色。默认与 background_color 一致
    max_font_size:单词最大字体大小。默认为None,表示自动调整
    min_font_size:单词最小字体大小。默认为4
    random_state: 用于生成随机数的种子,使得词云的布局可重复

  • generate(text)
    根据输入文本生成词云
    text 参数应为字符串,通常是一个长文本或从文档中提取的文本

  • generate_from_frequencies(frequencies)
    根据词频字典生成词云
    frequencies 是一个包含单词及其频率的字典 {word: frequency}

  • recolor()
    重新着色生成的词云,可用于更改现有词云的颜色

  • to_file(filename)
    将生成的词云保存为图像文件

  • to_image()
    将词云转换为 PIL 图像对象,以便进一步处理或显示

2. Demo

2.1 纯文本

基本的生成过程如下:

from wordcloud import WordCloud
import matplotlib.pyplot as plt# 示例文本
text = "Python is a great programming language. Python is widely used for data science, machine learning, AI, and more."# 创建词云对象,设置参数
# width=800, height=400: 设定了生成的词云图像大小为 800x400 像素。
# max_words=100: 限制最多显示 100 个单词。
# background_color='white': 词云的背景颜色为白色
wordcloud = WordCloud(width=800, height=400, max_words=100, background_color='white'
)# 生成词云
wordcloud.generate(text)# 显示词云
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")  # 关闭坐标轴
plt.show()# 保存词云为文件
wordcloud.to_file("wordcloud_example.png")

在这里插入图片描述

2.2 词频

from wordcloud import WordCloud
import matplotlib.pyplot as plt# 定义词频字典
frequencies = {'Python': 100, 'data': 80, 'science': 60, 'machine learning': 50, 'AI': 40}# 根据词频生成词云
wordcloud = WordCloud(width=800, height=400, background_color='white'
).generate_from_frequencies(frequencies)# 显示词云
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

在这里插入图片描述

2.3 自定义形状

通过 mask 参数,可以将词云显示为指定的形状

需要导入 numpy 和 Pillow 来处理图像作为形状遮罩

import numpy as np
from PIL import Image
from wordcloud import WordCloud
import matplotlib.pyplot as plt# 读取遮罩图像 
mask = np.array(Image.open('dog.jpg'))# 定义文本
text = "I love coding and programming, especially in Python, JavaScript, and more."# 生成词云,设置 mask
wordcloud = WordCloud(width=800,height=400,background_color='white',mask=mask,contour_width=1,contour_color='red'
).generate(text)# 显示词云
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

在这里插入图片描述

2.4 自定义颜色

通过 colormap 参数,可以使用不同的颜色映射来生成颜色多样的词云

from wordcloud import WordCloud
import matplotlib.pyplot as plt# 定义文本
text = "Colorful word clouds are amazing. They help to represent data visually and beautifully."# 创建词云对象,设置颜色映射
wordcloud = WordCloud(width=800,height=400,background_color='white',colormap='plasma'  # 使用 'plasma' 颜色映射
).generate(text)# 显示词云
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

在这里插入图片描述

2.5 自定义字体

生成中文词云时,必须指定支持中文的字体,否则会出现乱码

from wordcloud import WordCloud
import matplotlib.pyplot as plt# 定义中文文本
text = "数据科学是一个跨学科的领域,使用科学方法、流程、算法和系统从数据中提取知识和见解。"# 创建词云对象,设置中文字体
wordcloud = WordCloud(width=800, height=400, font_path='simhei.ttf',  # 指定中文字体路径background_color='white'
).generate(text)# 显示词云
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

在这里插入图片描述

2.6 html文件

此种方式适合给其他的语言直接使用,比如springboot

将词云生成的图像嵌入到 HTML 页面中,实现的思路是使用 wordcloud 库生成词云图并保存为静态图片文件,然后通过 base64 编码的方式嵌入 HTML 中,后端可以直接引用这个 HTML 文件

  1. 生成词云图:生成词云图并保存为图像文件或通过 matplotlib 转换为 base64 格式
  2. 生成 HTML 页面:将词云图以 标签嵌入到 HTML 页面中
  3. 保存 HTML 文件: 最后保存为 HTML 文件,供后端直接使用
import base64
from io import BytesIO
from wordcloud import WordCloud
import matplotlib.pyplot as plt# 示例文本
text = "Python is an amazing programming language. It is widely used in data science, AI, and machine learning."# 创建词云
wordcloud = WordCloud(width=800, height=400, background_color='white'
).generate(text)# 将词云图保存到内存中的图片对象
img_buffer = BytesIO()
wordcloud.to_image().save(img_buffer, format='PNG')
img_buffer.seek(0)# 将图片对象转为base64
img_base64 = base64.b64encode(img_buffer.read()).decode('utf-8')# 生成HTML内容,将base64编码的图片嵌入HTML中
html_content = f"""
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Word Cloud</title>
</head>
<body><h1>Word Cloud Example</h1><img src="data:image/png;base64,{img_base64}" alt="Word Cloud">
</body>
</html>
"""# 将HTML内容保存为文件
with open("wordcloud.html", "w", encoding="utf-8") as f:f.write(html_content)print("HTML 文件生成完毕,可以直接用于后端引用。")

在这里插入图片描述

关键字:详细分析python生成词云图的基本知识(附多个Demo)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: