广告位联系
返回顶部
分享到

使用Python中wordcloud库绘制词云图的教程

python 来源:互联网 作者:佚名 发布时间:2024-12-06 21:45:42 人浏览
摘要

词云图(Word Cloud)是数据可视化中常用的一种技术,通过将文字以不同的大小、颜色和方向排列,以展示文本数据中词汇的频次和重要性。对于文本分析、情感分析、关键词提取等应用,词云

词云图(Word Cloud)是数据可视化中常用的一种技术,通过将文字以不同的大小、颜色和方向排列,以展示文本数据中词汇的频次和重要性。对于文本分析、情感分析、关键词提取等应用,词云图都能够直观地展现信息。本文将详细介绍如何使用 Python 中的 wordcloud 库从 Excel 数据绘制词云图,帮助您快速上手词云图的生成和定制化。

一、环境准备

在开始之前,请确保您的开发环境中已经安装了以下库:

1

pip install wordcloud pandas matplotlib openpyxl

  • wordcloud:用于生成词云图。
  • pandas:处理 Excel 文件中的词频数据。
  • matplotlib:用于展示和保存词云图。
  • openpyxl:读取 Excel 文件。

二、词云图的基本原理

词云图的生成主要基于词汇的频数,频数越高的词汇在图中的字号越大。在 Python 中,wordcloud 库提供了多种自定义选项,例如字体、颜色、形状、最大词数等。接下来,我们将基于一个简单的 Excel 词频表格,逐步实现从数据加载到词云图绘制的过程。

1.步骤一:读取 Excel 文件

首先,使用 pandas 读取 Excel 文件,并确保将词汇和对应的频数提取出来。假设 Excel 文件包含两列:词汇 和 频数。

1

2

3

4

5

6

7

8

9

10

11

import pandas as pd

 

# 读取 Excel 文件

df = pd.read_excel('词汇频数表.xlsx')

 

# 确保数据按需加载

words = df['词汇'].values

frequencies = df['频数'].values

 

# 将词汇和频数组合成字典

word_freq = dict(zip(words, frequencies))

此时,word_freq 字典包含了词汇和它们对应的频数,格式如:{‘词汇1’: 10, ‘词汇2’: 15, …}。

2.步骤二:生成词云图

接下来,我们利用 wordcloud 库生成词云图。可以根据实际需求自定义词云图的显示样式。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

from wordcloud import WordCloud

import matplotlib.pyplot as plt

 

# 创建词云对象

wordcloud = WordCloud(

    font_path='simhei.ttf',  # 设置字体路径,确保中文显示

    background_color='white',  # 背景色

    width=800,  # 图像宽度

    height=400,  # 图像高度

    max_words=200,  # 最大词汇数

    max_font_size=100,  # 最大字体大小

    colormap='viridis'  # 颜色方案

).generate_from_frequencies(word_freq)

 

# 绘制并展示词云图

plt.figure(figsize=(10, 5))

plt.imshow(wordcloud, interpolation='bilinear')

plt.axis('off')  # 关闭坐标轴

plt.show()

参数说明

  • font_path:指定字体文件路径,这里使用了 “simhei.ttf” 以确保中文能够正确显示。
  • background_color:设置背景颜色,可选值包括 black, white, gray 等。
  • width 和 height:控制词云图的尺寸。
  • max_words:控制词云图中显示的最大词汇数。
  • max_font_size:控制最大字体的字号。
  • colormap:控制颜色映射方案,支持多种内置方案如 viridis, plasma, inferno 等。

3.步骤三:保存词云图

绘制完成后,您可以将词云图保存为图片文件,便于分享和展示。

1

2

# 保存词云图到文件

wordcloud.to_file('wordcloud.png')

一般在该步骤就已经结束啦~

4.步骤四:高级自定义(形状与颜色)

(1)自定义形状词云图不仅可以是矩形,还可以根据特定的形状生成。例如,将词云限制在一张图片的轮廓内。您可以通过以下方法实现:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

from PIL import Image

import numpy as np

 

# 加载形状模板图片

mask = np.array(Image.open('mask.png'))

 

# 生成带有形状的词云

wordcloud = WordCloud(

    font_path='simhei.ttf',

    background_color='white',

    mask=mask,  # 设置词云形状

    contour_width=1,  # 轮廓宽度

    contour_color='black'  # 轮廓颜色

).generate_from_frequencies(word_freq)

 

# 展示词云图

plt.figure(figsize=(10, 10))

plt.imshow(wordcloud, interpolation='bilinear')

plt.axis('off')

plt.show()

关键点讲解

  • 高清图片作为 mask:
    使用高分辨率的黑白圆形图片,词云的清晰度会显著提升。白色部分将作为背景,黑色部分是生成词云的区域。

  • contour_width 和 contour_color 参数:
    设置轮廓宽度和颜色,可以让词云图的形状更加突出。

  • 调整 max_font_size 和 max_words:
    通过控制词汇数量和最大字体大小,确保词云图在形状内分布均匀且美观。

    这是换了一个爱丽丝Alice的mask的词云图。
    (2)自定义颜色如果想让词云中的词汇颜色更加多样,可以使用 ImageColorGenerator 从图片中提取颜色:

1

2

3

4

5

6

7

8

9

10

from wordcloud import ImageColorGenerator

 

# 基于模板图片生成颜色

image_colors = ImageColorGenerator(mask)

 

# 绘制词云图并应用颜色

plt.figure(figsize=(10, 10))

plt.imshow(wordcloud.recolor(color_func=image_colors), interpolation='bilinear')

plt.axis('off')

plt.show()

三、常见问题与解决方案

1.中文乱码问题:

使用 wordcloud 生成词云时,若不指定中文字体,中文会显示为方块。解决方法是指定支持中文的字体,例如 “simhei.ttf”。

2.词云生成不均匀:

尝试调整 max_font_size 和 mask 参数,使词云分布更为美观。

四、总结

本文详细介绍了如何从 Excel 表格生成词云图,并通过实例展示了词云图的自定义生成方法。词云图作为一种直观的数据可视化手段,在文本分析中有着广泛应用。可以再结合深度学习的自然语言处理技术,词云图可以进一步扩展用于更复杂的文本挖掘场景。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • Python中使用pip换源的流程
    在Python开发过程中,我们经常需要安装各种第三方库。pip是Python的包管理工具,用于安装和管理Python库。然而,由于网络原因,有时访问默
  • 使用Python中wordcloud库绘制词云图的教程

    使用Python中wordcloud库绘制词云图的教程
    词云图(Word Cloud)是数据可视化中常用的一种技术,通过将文字以不同的大小、颜色和方向排列,以展示文本数据中词汇的频次和重要性。
  • Python文件批量处理操作的实现
    在日常的开发和数据处理过程中,我们可能会遇到需要对大量文件进行批量操作的场景。比如,批量重命名文件、批量移动文件、批量修改
  • python的三种等待方式及优缺点介绍
    一、调用方式 1.强制等待 调用time模块,使用time.sleep(n),强制等待n秒 2.隐式等待 implicitly_wait(n),设置隐式等待最大时间n秒,等待元素加载完
  • 利用Python爬虫精准获取淘宝商品

    利用Python爬虫精准获取淘宝商品
    在数字化时代,数据的价值日益凸显,尤其是在电子商务领域。淘宝作为中国最大的电商平台之一,拥有海量的商品数据,对于研究市场趋
  • PIL图像与数组之间转换的使用二十j

    PIL图像与数组之间转换的使用二十j
    getpixel 如果想对图像进行细致地处理,那么操作像素是必不可少的一步。在Image类中,通过getpixel可以得到图像在某个坐标位置处的像素值,
  • Python利用xmltodict实现字典和xml互相转换的代码
    xmltodict简介 概念 xmltodict是Python中用于处理XML数据的模块,它可将XML数据转换为字典,简化XML解析过程,同时保留数据结构,便于操作。 反
  • python中pip的使用方法介绍
    pip 是 Python 的默认包管理工具,随 Python 3.x 版本一同安装。它使得安装和管理 Python 包变得非常简单。本文将介绍 pip 的基本使用方法、常用
  • 基于Python制作一个全自动微信清粉小工具
    在当今社交软件中,微信是最常用的通讯工具之一。然而,随着时间的推移,我们的好友列表中可能会出现一些不再活跃的账号,也就是我
  • YOLOv8模型pytorch格式转为onnx格式的步骤介绍

    YOLOv8模型pytorch格式转为onnx格式的步骤介绍
    一、YOLOv8的Pytorch网络结构 yolov8网络从1-21层与pt文件相对应是BackBone和Neck模块,22层是Head模块。 二、转ONNX步骤 2.1 yolov8官方 1 2 3 4 5 6 7 8 9
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计