matplotlib ---词云图

news2024/12/30 1:57:33

词云图是一种直观的方式来展示文本数据,可以体现出一个文本中词频的使用情况,有利于文本分析,通过词频可以抓住一篇文章的重点
本文通过处理一篇关于分析影响洋流流向的文章,分析影响洋流流向的主要因素都有哪些

文本在文末结尾

1、用到库

from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
import numpy as np
import jieba.posseg as pseg
from collections import Counter
import PIL.Image as Image
from matplotlib import colors
#安装库可以用清华的镜像网站(可能会更新,可以上官网查询地址)
pip install wordcloud -i https://pypi.tuna.tsinghua.edu.cn/simple

2、读取文本文件

#jieba.posseg是Python中的一个分词工具,它可以将文本切割成词语,并且为每个词语标注词性。这个工具可以帮助我们更好地理解和处理自然语言文本。而pseg则是jieba.posseg的别名,用于方便快捷地进行调用。

text = open("有哪些因素会影响海洋洋流的方向?.txt", encoding="utf-8").read()
words = pseg.cut(text)

3、分词

# 按指定长度和词性提取词
# len(word)设置的是词长,想要提取两个两个字的就设置2,三个三个字的就设置3(以此类推)
report_words = []
for word, flag in words:
    print(f"{word} => {flag}")
    if (len(word) >= 2) and ('n' in flag):  # 选择词的长度大于等于2,且词性为名词的词
        report_words.append(word)
'''
对以上word 和 flag打印后会得到如下结果
的 => uj
具有 => v
相对 => d
稳定 => a
速度 => n
的 => uj
水平 => n
流动 => vn
, => x
是从 => v
一个 => m
海区 => n
水平 => n
或 => c
r表示代词,v表示动词,a表示形容词,n表示名词,uj表示助词,x表示标点符号。通过对文本进行词性标注,我们可以更好地理解文本及其中包含的实体。
'''

4、设置停用词&在已处理的文本中过滤停用词

# 设置停用词
stopwords = set(STOPWORDS)
stopwords.update(['补偿','海水','南半球','大西洋','印度洋','太平洋','差异','荒漠','南极洲','产生','current','Current','wind'])

# 去除停用词
report_words = [word for word in report_words if word not in stopwords]


# 统计高频词汇
result = Counter(report_words).most_common(200)  # 词的个数

# 建立词汇字典
content = dict(result)
# 输出词频统计结果
for i in range(37):
    word, flag = result[i]
    print("{0:<10}{1:>5}".format(word, flag))

5、设置png掩膜(设置图像显示的形状)

# 设置png掩膜
background = Image.open("rabbit.png").convert('RGB')
mask = np.array(background)

'''
如果输出结构还是长方形(正方形),应该是png图片“有问题”,可以尝试以下的处理

1.用p图软件把图片改成纯黑色(可能别的也可以,我没试过)

2.用以下代码把白色背景改为透明

# 如果当前位深是32的话,可以不用写转RGBA模式的这一句,但是写上也没啥问题
# 从RGB(24位)模式转成RGBA(32位)模式
img = Image.open("rabbit.png").convert('RGBA')
W, L = img.size
white_pixel = (0, 0, 0, 0)  # 白色
for h in range(W):
    for i in range(L):
        if img.getpixel((h, i)) == white_pixel:
            img.putpixel((h, i), (255, 255, 255, 0))  # 设置透明
img.save("yourfile_new.png")  # 自己设置保存地址
'''

6、字体和颜色设置

# 设置字体样式路径
font_path = r"C:\Windows\Fonts\simhei.TTF"

# 设置字体大小
max_font_size = 200
min_font_size = 10

# 建立颜色数组,可更改颜色
color_list = ['#CD853F','#DC143C','#00FF7F','#FF6347','#8B008B','#00FFFF','#0000FF','#8B0000','#FF8C00',
            '#1E90FF','#00FF00','#FFD700','#008080','#008B8B','#8A2BE2','#228B22','#FA8072','#808080']
# 调用颜色数组
colormap = colors.ListedColormap(color_list)

7、生成词云

# 生成词云
wordcloud = WordCloud(scale=4,  # 输出清晰度
                      font_path=font_path,  # 输出路径
                      colormap=colormap,  # 字体颜色
                      width=1600,  # 输出图片宽度
                      height=900,  # 输出图片高度
                      background_color='white',  # 图片背景颜色
                      stopwords=stopwords,  # 停用词
                      mask=mask,  # 掩膜
                      max_font_size=max_font_size,  # 最大字体大小
                      min_font_size=min_font_size)  # 最小字体大小
wordcloud.generate_from_frequencies(content)

# 使用 matplotlib 显示词云
# plt.imshow()将数据变成图像 ,plt.show() 将图像显示出来
# interpolation:插值方法。它定义了图像在放大或缩小时的插值方式。常用的值有’nearest’、‘bilinear’、'bicubic’等。较高的插值方法可以使图像看起来更平滑,但计算成本更高
plt.imshow(wordcloud, interpolation='bilinear')
# 关闭坐标轴
plt.axis('off')
plt.show()
# 保存词云图
wordcloud.to_file("wordcloud.png")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1706936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

升级鸿蒙4.2新变化,新增 WLAN 网络自动连接开关!

手机已经成为现代人生活中不可或缺的一部分&#xff0c;手机里的功能可以满足大部分人的生活场景&#xff0c;但是最依赖的应该就是手机网络&#xff0c;手机网络突然变差怎么办——消息发不出去&#xff1f;刷新闻速度变慢&#xff1f;仔细检查后&#xff0c;发现其实不是手机…

Linux-CentOS7-解决vim修改不了主机名称(无法打开并写入文件)

Linux-CentOS7-修改主机名称 修改之后使用强制保存退出也不行。 解决办法&#xff1a; 使用hostnamectl命令进行修改 查看系统主机名和信息&#xff1a; hostnamectl这条命令会显示当前系统的主机名、操作系统信息、内核版本、架构信息等相关信息。 修改系统主机名&#xff1…

HQChart使用教程99-K线窗口设置上下间距

HQChart使用教程99-K线窗口设置上下预留间距 指标窗口布局说明设置预留间距数据结构通过Setoption设置通过ChangeIndex设置 HQChart代码地址 指标窗口布局说明 顶部预留间距(3)和底部预留间距(5) 这个部分是算在Y轴坐标上的 设置预留间距 数据结构 HorizontalReserved&#…

Hono 框架使用经验谈

Hono&#x1f525;是一个小型、快速并开源的 Serverless Web 框架&#xff0c;用 TypeScript 写就。它适用于任何JavaScript运行时&#xff1a;Cloudflare Workers&#xff0c;Fastly ComputeEdge&#xff0c;Deno&#xff0c;Bun&#xff0c;Vercel&#xff0c;Netlify&#x…

Linux:线程

文章目录 前言1. 线程概念1.1 什么是线程1.2 线程比进程更加轻量化1.3 虚拟地址到物理地址的转化物理内存的管理页表 1.4 线程的优点1.5 线程的缺点1.6 线程异常1.7 线程用途 2. 进程 vs 线程3. 线程控制3.1 线程创建3.2 线程退出3.3 线程等待3.4 分离线程3.5 线程取消 4. 线程…

开源大模型与闭源大模型:谁将引领AI的未来?

前言 在AI领域&#xff0c;开源大模型和闭源大模型一直并存&#xff0c;各自有其独特的优势和挑战。下面&#xff0c;我们将从数据隐私、商业应用和社区参与三个方向&#xff0c;对这两种模型进行深入探讨。 一、数据隐私 开源大模型&#xff1a; 1. 透明度高&#xff1a; …

Raven2掠夺者2渡鸦2账号怎么验证 注册怎么验证账号教程

《渡鸦2》作为韩国孕育的次世代MMORPG手游巨制&#xff0c;是《Raven》系列辉煌传奇的最新篇章&#xff0c;它在暗黑奇幻的广袤天地间再度挥洒创意&#xff0c;深度融合前所未有的游戏机制与海量新颖内容&#xff0c;为该类型游戏树立了崭新的里程碑。公测日期锁定在2024年5月2…

线上政务大厅如何通过智能化服务和透明流程改变政务办理模式?

一、线上政务大厅方便快捷办理业务 1、多功能集成的一站式服务 线上政务大厅集成了多种政府服务功能&#xff0c;用户只需一个账号就能访问多个服务平台&#xff0c;办理各类政务业务。包括&#xff1a; &#xff08;1&#xff09;身份认证&#xff1a;用户可以通过线上政务大厅…

春秋云境CVE-2020-26048

简介 CuppaCMS是一套内容管理系统&#xff08;CMS&#xff09;。 CuppaCMS 2019-11-12之前版本存在安全漏洞&#xff0c;攻击者可利用该漏洞在图像扩展内上传恶意文件&#xff0c;通过使用文件管理器提供的重命名函数的自定义请求&#xff0c;可以将图像扩展修改为PHP&#xf…

移动云服务器选购指南(图文教程详解)

目录 一、前言 二、基本概念 2.1 定义 2.2 部署形式 2.3 用处 三、主流平台 四、主流产品推荐 4.1 云电脑 4.2 云主机ECS 4.3 弹性公网 IP 五、选购指南 5.1 明确场景 5.2 明确需求 5.3 明确身份 新用户 老用户 5.4 明确时间 5.5 明确教程 六、总结 一、前言…

windows驱动开发-PCI讨论(二)

认识PCI设备&#xff0c;还是要从配置空间说起&#xff0c;当PCI在ACPI和PCI复合体上电和枚举完成后&#xff0c;PCI根复合体会从PCI设备读出PCI设备的配置空间&#xff0c;许多信息(例如寄存器、内存空间、中断信息等等)都是是从配置空间获取的&#xff0c;所以接下来会详细讲…

黑马python-面向对象程序设计

1.定义类 class 类名&#xff1a; 代码 ….. 注意&#xff1a;类名要满足标识符命名规则&#xff0c;同时遵循大驼峰命名习惯 2.self&#xff1a; self指调用该函数的对象 3.创建对象 对象名类&#xff08;&#xff09; 4.添加获取对象属性 对象名.属性名值 5._init_()方法&…

C#电子名片(vCard)

目录 1.介绍 2.基本定义 3.字段信息 4&#xff0c;字段详解。 4.1&#xff0c;预定义类型的用法 4.2&#xff0c;基本类型 4.3&#xff0c;通讯地址类型 4.4&#xff0c;电信通信类型 4.5&#xff0c;地理类型 4.6&#xff0c;解释类型 5&#xff0c;应用。 6&…

Java | Leetcode Java题解之第103题二叉树的锯齿形层序遍历

题目&#xff1a; 题解&#xff1a; class Solution {public List<List<Integer>> zigzagLevelOrder(TreeNode root) {List<List<Integer>> ans new LinkedList<List<Integer>>();if (root null) {return ans;}Queue<TreeNode> n…

vue-cli2项目中使用scss

前言&#xff1a; 首先要搞清楚Sass和Scss的区别&#xff1a; 实际上Sass和Scss是同一种东西&#xff0c;Scss是 Sass3 引入新的语法&#xff0c;它们都是css预处理器。通常称为Sass&#xff0c;但存在两种不同的语法风格&#xff1a; 文件扩展名&#xff1a;Sass 默认…

IP 分片过程及偏移量计算

IP 报头中的三个字段 1、 标识符&#xff08; ldentifier )&#xff1a;16 bit 该字段与 Flags 和 Fragment Offest 字段联合使用&#xff0c; 对较大的上层数据包进行分段&#xff08; fragment &#xff09; 操作。 路由器将一个包拆分后&#xff0c;所有拆分开的小包被标记…

地下18米的科技守护:旗晟综合管廊巡检机器人

近日&#xff0c;安徽某业主的地下18米深的地下管廊处&#xff0c;一种先进的巡检机器人正活跃在管廊轨道上&#xff0c;执行着重要的巡检任务&#xff0c;只见机器人在管廊轨道上平稳前行&#xff0c;它搭载着先进的检测设备&#xff0c;对地下管廊内的各种设施进行监测巡检&a…

从了解到掌握 Spark 计算框架(一)Spark 简介与基础概念

文章目录 什么是 Spark&#xff1f;核心特点 Spark 对比 MapReduceSpark 编程模型RDDDataFrameDataset Spark 运行模式Spark 生态 什么是 Spark&#xff1f; Spark 是一个基于内存的分布式计算框架&#xff0c;最初由加州大学伯克利分校的 AMPLab 开发&#xff0c;后来捐赠给了…

R25 型双极型晶体管 433功率放大器,集电极电流可达100mA

R25 型硅基微波双极型晶体管是一种常见的晶体管&#xff0c;主要用于高频电子放大线路中。常被用作放大器、开关、变频器等电子电路中的核心元件。在放大电路中&#xff0c;它可以将微弱的信号放大到足以驱动输出负载&#xff1b;在开关电路中&#xff0c;它可以实现电路的打开…

邦注科技三机一体除湿干燥机在工业中的应用

三机一体除湿干燥机在工业中的应用广泛且重要&#xff0c;其结合了传统除湿机、冷凝器和加热器的功能&#xff0c;具有节能、环保、方便等特点。以下是关于三机一体除湿干燥机在工业中应用的详细解析&#xff1a; 一、应用领域 电子制造行业&#xff1a;在半导体、集成电路和…