文本可视化之词云图的使用

2024-01-08 16:44

本文主要是介绍文本可视化之词云图的使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

环境安装:
pip install  wordcloud -i  https://pypi.tuna.tsinghua.edu.cn/simple/ 
conda install  wordcloud
# -i 后面加镜像源网站

WordCloud(background_color,repeat,max_words=600,height=480, width=584, max_font_size,font_path colormap,mask,mode,collocations, prefer_horizontal)

相关参数:

  • background_color=‘white’, # 词云图的背景颜色,默认为 "black"
  • repeat=False, # 是否重复
  • max_words=600, # 词云图中显示的最大词语数量,默认为 200
  • height=480, width=584, # 图片尺寸
  • max_font_size=200, # 词云图中显示的最大字体大小,默认为 None
  • font_path=“C:/Windows/Fonts/FZSTK.TTF”, # 指定字体文件的路径,用于显示中文字符
  • colormap=“Reds”, # 指定词云图的颜色方案,默认为 "viridis"、“Reds”“Blues”“Greens”
  • mask=mask, # 词云图的形状,可以使用一个图片作为模板,一般结合imread(),将图片中不是白色的地方作为轮廓。
  • mode=“RGBA”, # 词云图的模式,可以设置为 "RGB""RGBA"
  • collocations=False# 否考虑词语搭配,默认为 True
  • prefer_horizontal=1# 控制词语水平摆放的频率,默认为 0.9

官方文档:https://github.com/amueller/word_cloud

英文词云图:
import matplotlib.pyplot as plt
from wordcloud import WordCloud# 这里是模拟读取文件 
text="""Python is a popular programming language.
It is widely used for web development, data analysis, and machine learning.
Python has a simple and readable syntax, making it easy to learn and use."""
# 创建词云对象
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text)# 绘制词云图
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')  # 不显示坐标轴
plt.show()

在这里插入图片描述

注意:英文分隔符是默认空格,所有我们不用对英文进行拆分处理。但是如果是中文,就需要使用jieba分词,需要拆分文字。

其实上面这个例子不是特别全面,应该进行停用词处理,这里给大家讲一下官方给出的例子:

from os import path
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import osfrom wordcloud import WordCloud, STOPWORDS
# 获取当前脚本文件的目录路径,或者如果在IPython笔记本中运行,则获取当前工作目录。
d = path.dirname(__file__) if "__file__" in locals() else os.getcwd()# 读取文件
text = open(path.join(d, 'alice.txt')).read()
# 读取模板图像(就是你可以自定义词云图的样子)
alice_mask = np.array(Image.open(path.join(d, "alice_mask.png")))
# 创建了一个停用词的集合,并添加了一个自定义的停用词"said"
stopwords = set(STOPWORDS)
stopwords.add("said")
# 创建词云图对象
wc = WordCloud(background_color="white", max_words=2000, mask=alice_mask,stopwords=stopwords, contour_width=3, contour_color='steelblue')wc.generate(text)
# 存储
wc.to_file(path.join(d, "alice.png"))
# show
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.figure()
plt.show()

在这里插入图片描述

注意模板图像一般是黑色的,相当于只填充黑色的地方,我们看一下结果:

在这里插入图片描述

十分优美!

中文词云图:
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import jieba
from PIL import Image
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来显示中文,不然会乱码
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
text = """"
人生苦短,我用Python。Python是一门简单易学的编程语言,
广泛应用于数据分析、人工智能和Web开发领域。Python拥有丰富的第三方库和生态系统,
为开发者提供了很多便利。学习Python,让你的编程之路更加愉快。
"""# 使用jieba进行中文分词
seg_list = jieba.cut(text, cut_all=False)
seg_text = ' '.join(seg_list)
print(seg_text)# 创建词云对象   
wordcloud = WordCloud(font_path=r'msyh.ttc',width=800, height=400, background_color='white').generate(seg_text)
# wordcloud = WordCloud(font_path=r'C:/Windows/Fonts/FZSTK.TTF',width=800, height=400, background_color='white').generate(seg_text)
# 绘制词云图 
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')  # 不显示坐标轴
# 保存词云图为图片文件
wordcloud.to_file("wordcloud.png")
plt.show()

在这里插入图片描述

读取本地文件:
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
from imageio import imread
text = """Python is a popular programming language.
It is widely used for web development, data analysis, and machine learning.
Python has a simple and readable syntax, making it easy to learn and use."""
# 读取图像并转换为数组mask=np.array(Image.open("./img.png"))# 创建词云对象,并设置 mask 参数
wordcloud = WordCloud(mask=mask,width=800, height=400, background_color='white')# 生成词云图
wordcloud.generate(text)# 显示词云图
plt.axis("off")
plt.imshow(wordcloud, interpolation="bilinear")
plt.show()

在这里插入图片描述

自定义词云形状:
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
from imageio import imread
text = """Python is a popular programming language.
It is widely used for web development, data analysis, and machine learning.
Python has a simple and readable syntax, making it easy to learn and use."""
# 读取图像并转换为数组x, y = np.ogrid[:300, :300]mask = (x - 150) ** 2 + (y - 150) ** 2 > 130 ** 2
mask = 255 * mask.astype(int)# 创建词云对象,并设置 mask 参数
wordcloud = WordCloud(mask=mask,width=800, height=400, background_color='white')# 生成词云图
wordcloud.generate(text)# 显示词云图
plt.axis("off")
plt.imshow(wordcloud, interpolation="bilinear")
plt.show()

在这里插入图片描述

总结:

​ 通过本文的介绍,我们深入了解了词云图的使用和相关参数,并学会了生成中文词云图、英文词云图以及自定义词云图的样式。词云图作为一种强大的数据可视化工具,可以帮助我们直观地了解文本数据的关键词和主题。无论是从事数据分析、文本挖掘还是对话题进行可视化呈现,词云图都能提供有价值的信息。

​ 在创建词云图时,我们可以根据需求调整不同的参数,如背景颜色、词数限制和停用词等,以达到最佳效果。此外,我们还可以通过选择合适的字体、设置自定义形状和调整颜色、轮廓等来创建独特的词云图。

​ 希望本文对你理解词云图的基本原理和应用提供了帮助,并激发了你在数据可视化方面的创造力。无论是在学术研究、商业分析还是个人项目中,词云图都是一种强大而灵活的工具,能够使你的数据更具有吸引力和可解释性。

​ 开始探索词云图的奇妙世界吧!让我们用词云图来揭示文本背后的故事,展示文字的魅力,带领读者进入一个充满词语和想象力的视觉盛宴。无论是文字的力量还是数据的美感,词云图都能为我们带来全新的体验。让我们一起用词云图来发现和分享这个世界上的无限可能性!

这篇关于文本可视化之词云图的使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/584134

相关文章

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件