使用python开发的词云图生成器2.0

2024-05-01 18:52

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

使用python开发的词云图生成器2.0

  • 更新部分
  • 词云图
  • 主要三方库
  • 工具介绍和效果
    • 工具界面:
  • 代码

更新部分

1.支持选择字体;
2.支持选择词云图形状

词云图

词云图啊,简单来说,它可以把文本数据中的高频关键词变成不同大小、颜色的词汇,然后像云朵一样聚集在一起。如下图所示:
在这里插入图片描述
在这里插入图片描述

主要三方库

  • pyqt开发gui界面
  • jieba库进行分词
  • matplotlib库展示词云图
  • wordcloud库生成词云图

工具介绍和效果

工具界面:

在这里插入图片描述

代码

"""
楷体:simkai.ttf
隶书:SIMLI.TTF
宋体:simsun.ttc
黑体:simhei.ttf
微软雅黑:msyh.ttc"""
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QSizePolicy, QFileDialog, \QColorDialog, QComboBox
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from wordcloud import WordCloud
import jieba
import numpy as np
from PIL import Imageclass MainWindow(QWidget):def __init__(self):super().__init__()self.color_code = Noneself.mask_shape = Noneself.ch_font = Noneself.initUI()def initUI(self):self.font_dict = {'楷体': 'simkai.ttf', '隶书': 'SIMLI.TTF', '宋体': 'simsun.ttc', '黑体': 'simhei.ttf','微软雅黑': 'msyh.ttc'}# 创建布局vbox = QVBoxLayout()# 第一部分:横向排列的四个按钮button_list = ["选择文本", "选择停用词", "选择背景颜色", "导出词云图", "选择词云图形状", "选择字体"]self.font_type = QComboBox(self)# 遍历字典的键,并将它们添加到 QComboBox 中for key in self.font_dict:self.font_type.addItem(key)hbox1 = QHBoxLayout()for i in range(6):btn = QPushButton(button_list[i])if button_list[i] == "选择文本":btn.clicked.connect(self.openTextFile)elif button_list[i] == "选择停用词":btn.clicked.connect(self.openStopWordsFile)elif button_list[i] == "选择背景颜色":btn.setObjectName("选择背景颜色")btn.clicked.connect(self.selectBackgroundColor)elif button_list[i] == "选择词云图形状":btn.setObjectName("选择词云图形状")btn.clicked.connect(self.open_mask_img)else:btn.clicked.connect(self.save_wordcloud_image)hbox1.addWidget(btn)hbox1.addWidget(self.font_type)vbox.addLayout(hbox1)# 第二部分:一个按钮btn_single = QPushButton('更新词云图')btn_single.clicked.connect(self.update_wordcloud)  # 连接点击事件vbox.addWidget(btn_single)# 第三部分:matplotlib绘制的折线图(假设MatplotlibCanvas已定义)self.fig = Figure(figsize=(8, 8), dpi=100)self.axes = self.fig.add_subplot(111)self.canvas = FigureCanvas(self.fig)vbox.addWidget(self.canvas)  # 将画布添加到布局中# 设置窗口属性self.setLayout(vbox)self.setWindowTitle('词云图生成器V2.0')self.setGeometry(500, 300, 800, 640)self.show()def open_mask_img(self):options = QFileDialog.Options()options |= QFileDialog.DontUseNativeDialogfileName, _ = QFileDialog.getOpenFileName(self, "选择词云图形状", "","Image Files (*.png *.xpm *.jpg *.jpeg)",options=options)if fileName:self.mask_shape = np.array(Image.open(fileName))def save_wordcloud_image(self):options = QFileDialog.Options()options |= QFileDialog.DontUseNativeDialogfileName, _ = QFileDialog.getSaveFileName(self, "保存词云图", "","PNG Files (*.png);;JPG Files (*.jpg);;All Files (*)",options=options)if fileName:self.fig.savefig(fileName, dpi=100, bbox_inches='tight')print(f"词云图已保存为 {fileName}")def update_wordcloud(self):# 字体选择selected_text = self.font_type.currentText()# 使用字典的键来检索对应的值self.ch_font = self.font_dict[selected_text]# 使用jieba进行分词word_list = jieba.cut(self.text, cut_all=False)words = " ".join(word_list)# 设置matplotlib使用支持中文的字体# 创建WordCloud对象并生成词云图print(self.color_code)wordcloud = WordCloud(width=800, height=800,background_color=self.color_code if self.color_code is not None else "white", \stopwords=None, font_path=self.ch_font if self.ch_font is not None else 'msyh.ttc',mask=self.mask_shape if self.mask_shape is not None else None).generate(words)# 清除之前的图像并绘制新的词云图self.axes.clear()self.axes.imshow(wordcloud, interpolation='bilinear')self.axes.axis("off")self.canvas.draw()def openTextFile(self):"""打开文件选择对话框,选择文本文件"""self.file_path, _ = QFileDialog.getOpenFileName(self, "选择文本文件", "", "Text Files (*.txt)")if self.file_path:  # 确保文件路径不为空with open(self.file_path, 'r', encoding='utf-8') as file:  # 读取文本文件内容self.text = file.read()# 自动更新词云图else:print("未选择文件")def openStopWordsFile(self):"""打开文件选择对话框,选择停用词文件"""file_path, _ = QFileDialog.getOpenFileName(self, "选择停用词文件", "", "Text Files (*.txt)")# 这里添加处理文件路径的逻辑with open(file_path, 'r', encoding='utf-8') as f:stopwords = set(f.read().splitlines())print(stopwords)def selectBackgroundColor(self):"""打开颜色选择器,选择背景颜色"""color = QColorDialog.getColor()if color.isValid():# 更新按钮文本为颜色代码self.color_code = color.name()button = self.findChild(QPushButton, "选择背景颜色")button.setText(self.color_code)# 更新按钮文本颜色button.setStyleSheet(f"color: {self.color_code};")# 这里添加使用所选颜色的逻辑if __name__ == '__main__':app = QApplication(sys.argv)ex = MainWindow()sys.exit(app.exec_())

这篇关于使用python开发的词云图生成器2.0的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作