首页Python【Python计算生态】w...

【Python计算生态】wordcloud——词云图

Python受欢迎的原因之一就是其计算生态丰富,据不完全统计,Python 目前为止有约13万+的第三方库。

本系列将会陆续整理分享一些有趣、有用的第三方库。

文章配套代码获取有以下两种途径:
  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1FSGLd7aI_UQlCQuovVHc_Q?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Python_Ecosystem





01
简介

Python第三方库Wordcloud是一个用于生成词云图的库。官方文档地址:
https://github.com/amueller/word_cloud
可以通过pip安装:
pip install wordcloud
词云图是一种可视化的方式,用于展示文本数据中出现频率较高的词汇。通过将文本中的词汇按照其出现的频率进行大小排序,然后将这些词汇以特定的形状、颜色等元素组合成一个图形,从而直观地展示文本的主题和关键词。可用于文本分析、数据可视化和社交媒体分析等多个场景,帮助快速识别关键词汇和热点话题。
02
使用

wordcloud库将词云作为一个WordCloud对象来处理。以下是创建和使用WordCloud对象的基本步骤:
  • 1、导入Wordcloud库:
from wordcloud import WordCloud
2、加载待制作词云的文本:
使用WordCloud类创建一个WordCloud对象,并传入相关参数进行配置。
对于中文文本,分词处理是制作词云图的关键步骤。可以使用jieba库对中文文本进行分词处理,并将分词结果以空格为分隔符拼接成字符串。例如:
import jiebatext = "这是一个中文文本示例,用于制作词云图。"words = jieba.cut(text)text_space_split = ' '.join(words)
3、创建WordCloud对象:
可以通过wordcloud.WordCloud()创建一个词云对象。
wordcloud = WordCloud(background_color='black'                      colormap='viridis'                      font_path='simhei.ttf')
Wordcloud库提供了丰富的参数用于定制词云图的外观和样式。以下是一些常用的参数:
  • widthheight:指定词云图的宽度和高度(以像素为单位)。
  • background_color:指定词云图的背景颜色,默认为黑色。
  • colormap:指定词云图的颜色映射方案。
  • font_path:指定中文字体路径,以避免中文乱码问题。
  • max_words:指定词云图中显示的最大单词数,默认为200。
  • stopwords:指定一个停用词集合,这些词将不会出现在词云图中。
  • mask:指定一个二值掩码图像,用于定义词云的形状。
  • contour_widthcontour_color:用于绘制掩码轮廓的宽度和颜色。
4、生成词云图:
使用WordCloud对象generate方法加载文本数据并生成词云图。例如:
wordcloud.generate(text_space_split )
5、显示或保存词云图:
可以使用Matplotlib库显示词云图,例如:
import matplotlib.pyplot as pltplt.figure(figsize=(105))plt.imshow(wordcloud, interpolation='bilinear')plt.axis('off')  # 隐藏坐标轴plt.show()
或者将词云图保存到文件中,例如:
wordcloud.to_file('wordcloud.png')

得到如下词云图:

03
方法

WordCloud对象提供的方法主要包括以下几种:

  • generate(text)
根据传入的文本生成词云。text参数是一个字符串,包含要生成词云的文本。
  • generate_from_frequencies(frequencies)
根据词频字典生成词云。frequencies参数是一个字典,其中键是单词,值是对应的频率。
  • fit_words(diction, max_font_size=None)
根据一个包含单词和对应字体大小的字典来生成词云。diction参数是一个字典,其中键是单词,值是字体大小。
  • to_file(filename)
将生成的词云保存为图片文件。filename参数是文件的路径和名称。
  • to_array():将词云转换为numpy数组。
# 根据文本生成词云wordcloud.generate(text)
# 将词云转换为NumPy数组wordcloud_array = wordcloud.to_array()
  • recolor(color_func, random_state=None)
重新着色词云中的单词。color_func参数是一个函数,用于确定每个单词的颜色。random_state参数用于控制随机数生成器的状态,以确保颜色的可重复性。
在下面的示例中:
  • 首先创建了一个包含单词及其频率的字典frequencies
  • 然后,创建了一个WordCloud对象。
  • 使用generate_from_frequencies方法根据词频字典生成了词云。
  • 接下来,定义了一个random_color_func函数,该函数为每个单词生成一个随机的HSL颜色值
  • 使用recolor方法和定义的random_color_func函数重新着色词云,并可视化。
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np

# 示例词频字典
frequencies = {
    'Python': 100,
    'Data': 70,
    'Science': 50,
    'Machine': 80,
    'Learning': 90,
    'AI': 60,
    'Visualization': 40,
    'WordCloud': 120
}

# 创建WordCloud对象
wordcloud = WordCloud(background_color='black')

# 使用generate_from_frequencies方法生成词云
wordcloud.generate_from_frequencies(frequencies)

# 或者使用fit_words方法(效果与generate_from_frequencies类似)
# wordcloud.fit_words(frequencies)

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

# 重新着色词云(示例:使用随机颜色)
# 在这个函数中,上述参数并没有被直接使用,但被传递给函数以符合WordCloud.recolor方法的期望签名。
def random_color_func(word, font_size, position, orientation, random_state=None, **kwargs):
    # 该函数会返回一个表示随机亮度的红色系的HSL颜色字符串,因为色调被固定为0(表示红色系的某种颜色)、饱和度被设置为100%、
    return"hsl(0, 100%%, %d%%)" % np.random.randint(60, 100)

wordcloud.recolor(color_func=random_color_func, random_state=40)

# 显示重新着色后的词云
plt.figure(figsize=(5, 3))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')  # 不显示坐标轴
plt.show()

得到如下词云图:


更多内容可以前往GitHub官方页面查看。

本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments