使用Python绘制词云图的详细教程

 更新时间:2025年01月02日 10:53:30   作者:一只蜗牛儿  
词云(Word Cloud)是一种数据可视化技术,用于显示文本数据中的频繁单词,在本教程中,我们将使用 Python 的 wordcloud 库,结合 matplotlib 和 jieba 等工具,展示如何从文本数据生成词云图,需要的朋友可以参考下

引言

词云(Word Cloud)是一种数据可视化技术,用于显示文本数据中的频繁单词。它通过将出现频率较高的词汇以较大的字体显示,频率较低的词汇则以较小的字体显示,直观地呈现出文本的关键词。

在本教程中,我们将使用 Python 的 wordcloud 库,结合 matplotlib 和 jieba 等工具,展示如何从文本数据生成词云图。

1. 安装所需的库

在开始之前,你需要确保已经安装了以下 Python 库:

pip install wordcloud matplotlib jieba numpy pillow
  • wordcloud: 用于生成词云图。
  • matplotlib: 用于显示生成的词云图。
  • jieba: 用于中文分词。
  • numpy: 用于处理数组数据。
  • pillow: 用于图像处理(可选,增强词云图的效果)。

2. 基本的词云图生成

我们从简单的英文文本开始,展示如何生成词云图。

2.1 基本词云生成

import matplotlib.pyplot as plt
from wordcloud import WordCloud

# 1. 准备文本数据
text = "Python is a great programming language. Python is widely used for data science, web development, and automation."

# 2. 创建词云对象
wordcloud = WordCloud(width=800, height=400, background_color="white").generate(text)

# 3. 显示词云图
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")  # 不显示坐标轴
plt.show()

解释:

  • WordCloud 是用于生成词云图的类。我们通过设置 width 和 height 来调整图像的大小,background_color="white" 设置背景色为白色。
  • .generate(text) 方法用于从文本生成词云。
  • imshow() 显示生成的词云图,interpolation='bilinear' 是为了让图像更平滑。

2.2 自定义词云图的外观

你可以根据自己的需求定制词云图的外观,例如设置不同的颜色、字体等。

示例:设置自定义颜色

wordcloud = WordCloud(width=800, height=400, background_color="black", colormap="coolwarm").generate(text)

plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
  • colormap="coolwarm":设置颜色映射,可以选择不同的颜色方案,例如 coolwarminfernoplasma 等。

示例:设置自定义字体

wordcloud = WordCloud(font_path="/path/to/your/font.ttf", width=800, height=400, background_color="white").generate(text)

plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
  • font_path 可以设置一个自定义字体,特别适合中文词云生成。

3. 中文词云图的生成

生成中文词云图的难点在于中文分词。我们可以使用 jieba 库对中文文本进行分词,然后再生成词云图。

3.1 中文分词与词云图生成

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 1. 准备中文文本
text = "Python是一个非常强大的编程语言。Python广泛应用于数据科学、机器学习和人工智能等领域。"

# 2. 使用jieba进行中文分词
seg_list = jieba.cut(text)
word_list = " ".join(seg_list)  # 将分词结果转换为字符串

# 3. 创建词云对象并生成词云
wordcloud = WordCloud(font_path="msyh.ttc", width=800, height=400, background_color="white").generate(word_list)

# 4. 显示词云图
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

解释:

  • jieba.cut(text) 用于对中文文本进行分词。
  • 将分词结果通过 " ".join(seg_list) 拼接成一个字符串供词云图使用。
  • font_path="msyh.ttc" 是指定一个支持中文的字体路径(msyh.ttc 是微软雅黑字体,你可以根据需要选择其他字体文件)。

4. 使用掩码(Mask)生成定制形状的词云

掩码(Mask)是指通过一张图片来限定词云图的形状,这样生成的词云就会以图片的轮廓为形状。

4.1 使用图片掩码

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

# 1. 准备文本数据
text = "Python is a versatile programming language. It is popular among data scientists, developers, and AI researchers."

# 2. 读取掩码图像
mask_image = np.array(Image.open("cloud_shape.png"))

# 3. 创建词云对象并生成词云
wordcloud = WordCloud(width=800, height=400, background_color="white", mask=mask_image).generate(text)

# 4. 显示词云图
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

解释:

  • mask_image = np.array(Image.open("cloud_shape.png")):我们加载一张图像(例如心形、云形等),并将其转换为 NumPy 数组作为掩码。
  • mask 参数用于指定词云图的形状。

注意:使用掩码时,图像的背景必须是白色或者透明,且图像本身应该是黑白色(黑色表示词云区域,白色表示透明区域)。

5. 调整词频和生成自定义词云

你可以通过手动调整单词的频率,来控制词云图中某些词语的大小。

5.1 设置频率字典

from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 1. 创建词频字典
word_frequencies = {
    "Python": 100,
    "Java": 50,
    "C++": 30,
    "JavaScript": 70,
    "Ruby": 10
}

# 2. 创建词云对象
wordcloud = WordCloud(width=800, height=400, background_color="white").generate_from_frequencies(word_frequencies)

# 3. 显示词云图
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

解释:

  • 使用 generate_from_frequencies() 方法,我们可以根据频率字典来生成词云图,其中字典的键是单词,值是对应的频率。
  • 词云图会根据频率字典中提供的词频信息来显示单词,频率较高的单词会显示得更大。

6. 保存词云图为文件

生成的词云图不仅可以在屏幕上显示,还可以保存为图像文件(如 PNG 或 JPG 格式)以供后续使用。

6.1 保存词云图

wordcloud = WordCloud(width=800, height=400, background_color="white").generate(text)

# 保存为文件
wordcloud.to_file("wordcloud_output.png")

解释:

  • 使用 to_file() 方法将生成的词云图保存为文件。你可以指定保存的文件路径和格式(如 PNG、JPG 等)。

7. 总结

在本文中,我们详细介绍了如何使用 Python 和 wordcloud 库生成词云图。我们学习了以下内容:

  1. 基本词云图生成:通过简单的文本生成词云。
  2. 中文词云图生成:使用 jieba 库对中文文本进行分词,并生成词云图。
  3. 使用掩码生成定制形状的词云:通过图片掩码来创建具有特定形状的词云。
  4. 自定义词云:根据词频字典生成自定义的词云图。
  5. 保存词云图:将生成的词云图保存为图像文件。

词云是一种强大的可视化工具,可以帮助你从大量的文本数据中提取出最具代表性的词汇。在实际应用中,词云广泛用于分析社交媒体数据、评论数据等文本内容。

到此这篇关于使用Python绘制词云图的详细教程的文章就介绍到这了,更多相关Python绘制词云图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python爬虫基础讲解之scrapy框架

    Python爬虫基础讲解之scrapy框架

    scrapy是一个使用Python语言(基于Twisted框架)编写的开源网络爬虫框架,目前由scrapinghub Ltd维护.Scrapy简单易用、灵活易拓展、开发社区活跃,并且是跨平台的.在Linux、MaxOS以及windows平台都可以使用,需要的朋友可以参考下
    2021-06-06
  • Python中mmap模块处理大文本的操作方法

    Python中mmap模块处理大文本的操作方法

    这篇文章主要介绍了Python中mmap模块(处理大文本),将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存映射读写取代I/O缓存读写,以获得较高的性能,需要的朋友可以参考下
    2023-02-02
  • PyHacker编写指南引用Nmap模块实现端口扫描器

    PyHacker编写指南引用Nmap模块实现端口扫描器

    这篇文章主要为大家介绍了PyHacker编写指南Nmap模块实现端口扫描,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Pytest框架之fixture详解(一)

    Pytest框架之fixture详解(一)

    本文详细讲解了Pytest框架之fixture,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Python利用递归实现文件的复制方法

    Python利用递归实现文件的复制方法

    今天小编就为大家分享一篇Python利用递归实现文件的复制方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • YOLOv5目标检测之anchor设定

    YOLOv5目标检测之anchor设定

    在训练yolo网络检测目标时,需要根据待检测目标的位置大小分布情况对anchor进行调整,使其检测效果尽可能提高,下面这篇文章主要给大家介绍了关于YOLOv5目标检测之anchor设定的相关资料,需要的朋友可以参考下
    2022-05-05
  • Python中将字符串变成数字的5种方法示例

    Python中将字符串变成数字的5种方法示例

    Python提供了多种方式来转换字符串为数字类型,但是每一种方式都有其优缺点,这篇文章主要介绍了Python中将字符串变成数字的5种方法,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • python合并多个excel文件的示例

    python合并多个excel文件的示例

    这篇文章主要介绍了python合并多个excel文件的示例,帮助大家提高办公效率,感兴趣的朋友可以了解下
    2020-09-09
  • opencv锁定鼠标定位的实现

    opencv锁定鼠标定位的实现

    本文主要介绍了opencv锁定鼠标定位的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • PyCharm+PyQt5+QtDesigner配置详解

    PyCharm+PyQt5+QtDesigner配置详解

    这篇文章主要介绍了PyCharm+PyQt5+QtDesigner配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08

最新评论