WordCloud学习笔记:打造词云图的艺术之路

词云图,又称文字云,是一种将文本中高频关键词进行视觉化展示的工具。通过过滤掉大量低频低质文本信息,词云图能够让观众一眼领略文本的主旨。

图片[1]-WordCloud学习笔记:打造词云图的艺术之路-山海云端论坛

GitHub 仓库:https://github.com/amueller/word_cloud

官方地址:https://amueller.github.io/word_cloud/

WordCloud库概述:

wordcloud 是一个高效的 Python 词频可视化工具,支持各种掩膜(mask)和颜色,通过 API 轻松实现个性化的词云输出。

安装:

pip install wordcloud

核心API:

  1. WordCloud([font_path, width, height, ...]) – 生成和描绘词云的主要函数。
  2. ImageColorGenerator(image[, default_color]) – 通过输入 RGB 图像获取色彩信息。
  3. random_color_func([word, font_size, ...]) – 随机渲染颜色。

常规使用方法:

import wordcloud from wordcloud import WordCloud # 配置对象参数 w = wordcloud.WordCloud(width=400, height=200, max_words=200, background_color='white', font_path='C:\Windows\Fonts\STZHONGS.TTF', stopwords=STOPWORDS, max_font_size=150, random_state=30) # 加载文本 text = "Your Text Here" w.generate_from_text(text) # 修改字体颜色 img_colors = ImageColorGenerator(backgroud_Image) w.recolor(color_func=img_colors) # 显示词云图 plt.imshow(w) plt.axis('off') plt.show() # 输出词云文件 d = path.dirname(file) wc.to_file(path.join(d, "h11.jpg"))

自定义词云颜色:

class GroupedColorFunc(object): # ... # 详细设置见原文档 # 创建词云 wc = WordCloud(collocations=False, background_color="white").generate(text) # 设置词的颜色 color_to_words = {"#00ff00": ["第一", "第五"], "red": ["第三", "第六"], "yellow": ["第二"]} default_color = "blue" grouped_color_func = GroupedColorFunc(color_to_words, default_color) # 设置词云的颜色 wc.recolor(color_func=grouped_color_func) # 显示词云图 plt.figure() plt.imshow(wc, interpolation="bilinear") plt.axis("off") plt.show()

自定义突出词的重要程度:

# 定义一个权重映射函数 def get_mask(): x, y = np.ogrid[:300, :300] mask = (x - 150) ** 2 + (y - 150) ** 2 > 130 ** 2 mask = 255 * mask.astype(int) return mask # 每个词的权重 text = {"第一": 0.1, "第二": 0.2, "第三": 0.3, "第四": 0.4, "第五": 0.5} # 创建词云 wc = WordCloud(background_color="white", mask=get_mask()) wc.generate_from_frequencies(text) # 显示词云图 plt.axis("off") plt.imshow(wc, interpolation="bilinear") plt.show()

这些优化后的内容旨在提供更清晰、简洁和易于理解的信息,帮助读者更好地了解 WordCloud 库的使用和特性。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容