python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python绘制词云图

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

作者:小高要坚强

这篇文章主要介绍了如何使用Python的wordcloud库从Excel数据生成词云图,包括环境准备、词云图的基本原理、生成词云图的步骤、保存词云图以及高级自定义(形状与颜色),文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

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

一、环境准备

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

pip install wordcloud pandas matplotlib openpyxl

二、词云图的基本原理

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

1.步骤一:读取 Excel 文件

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

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 库生成词云图。可以根据实际需求自定义词云图的显示样式。

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()

参数说明

3.步骤三:保存词云图

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

# 保存词云图到文件
wordcloud.to_file('wordcloud.png')

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

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

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

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()

关键点讲解

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

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

您可能感兴趣的文章:
阅读全文