Python 制作词云图


在这里插入图片描述
💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
在这里插入图片描述

  • 推荐:「stormsha的主页」👈,持续学习,不断总结,共同进步,为了踏实,做好当下事儿~

  • 专栏导航

    • Python系列: Python面试题合集,剑指大厂
    • Git系列: Git操作技巧
    • GO系列: 记录博主学习GO语言的笔记,该笔记专栏尽量写的试用所有入门GO语言的初学者
    • 数据库系列: 详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 运维系列: 总结好用的命令,高效开发
    • 算法与数据结构系列: 总结数据结构和算法,不同类型针对性训练,提升编程思维

    非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

    💖The Start💖点点关注,收藏不迷路💖

    📒文章目录

      • 词云图简介
      • 环境准备
      • 词云图的基本制作流程
        • 1. 文本数据准备
        • 2. 文本清洗
        • 3. 生成词云图
        • 4. 显示和保存词云图
        • 5. 完整代码
        • 6. 效果图
      • 技巧与最佳实践
        • 1. 词云图形状
        • 2. 词云图颜色
        • 3. 词云图字体
        • 4. 词云图布局
        • 5. 词云图的交互性


在数据可视化领域,词云图以其独特的视觉冲击力和信息传达能力,成为开发者和数据分析师展示文本数据的重要工具。本文将深入探讨如何使用 Python 制作词云图,并分享一些实用的技巧和最佳实践。

词云图简介

词云图是一种将文本数据中的关键词以不同大小、颜色和字体显示在图形中的可视化技术。关键词的字体大小通常与其在文本中出现的频率成正比,从而突出显示文本中的重要信息。

环境准备

在开始制作词云图之前,我们需要准备 Python 环境,并安装一些必要的库。主要使用的库包括 matplotlib 用于绘图,PIL 用于图像处理,以及 wordcloud 用于生成词云图。

pip install wordcloud

词云图的基本制作流程

1. 文本数据准备

首先,我们需要准备或获取文本数据。这些数据可以是网页内容、文章、评论等。例如,我们可以使用 Python 的 requests 库来获取网页内容。

import requests

url = 'https://stormsha.blog.csdn.net/article/details/138405944/'
response = requests.get(url)
html_content = response.text

2. 文本清洗

获取文本后,需要进行清洗,去除无用的符号、停用词等,以提高词云图的质量。

import re
from wordcloud import STOPWORDS

# 使用BeautifulSoup解析网页内容  
soup = BeautifulSoup(html_content, 'html.parser')  
  
# 使用get_text()方法去除HTML标签,并将结果转换为字符串  
text = soup.get_text()  

text = re.sub(r'\W+', ' ', text)
stopwords = set(STOPWORDS)
text = ' '.join([word for word in text.split() if word not in stopwords])

3. 生成词云图

使用 wordcloud 库生成词云图。我们可以自定义词云图的形状、颜色、字体等属性。

from wordcloud import WordCloud

wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text)

4. 显示和保存词云图

最后,使用 matplotlib 库显示和保存词云图。

import matplotlib.pyplot as plt

plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
wordcloud.to_file('word_cloud.png')

5. 完整代码

import matplotlib  
import requests  
import re  
from wordcloud import STOPWORDS, WordCloud  
import matplotlib.pyplot as plt  
from bs4 import BeautifulSoup  
  
matplotlib.use('TkAgg')  
url = 'https://stormsha.blog.csdn.net/article/details/138405944/'  
response = requests.get(url)  
html_content = response.text  
  
# 使用BeautifulSoup解析网页内容  
soup = BeautifulSoup(html_content, 'html.parser')  
  
# 使用get_text()方法去除HTML标签,并将结果转换为字符串  
text = soup.get_text()  
  
text = re.sub(r'\W+', ' ', text)  
stopwords = set(STOPWORDS)  
text = ' '.join([word for word in text.split() if word not in stopwords])  
word_cloud = WordCloud(width=800, height=400, background_color='white').generate(text)  
plt.figure(figsize=(10, 5))  
plt.imshow(word_cloud, interpolation='bilinear')  
plt.axis('off')  
plt.show()  
word_cloud.to_file('word_cloud.png')

6. 效果图

![[Figure_1.png]]

技巧与最佳实践

1. 词云图形状

默认的词云图是矩形的,但我们可以自定义词云图的形状,如使用公司 logo 或特定图形作为词云的轮廓。

from PIL import Image
image_coloring = np.array(Image.open('shape.png'))
wordcloud = WordCloud(mask=image_coloring).generate(text)

2. 词云图颜色

颜色对于词云图的视觉效果至关重要。我们可以根据文本内容或个人喜好调整颜色。

wordcloud = WordCloud(colormap='viridis').generate(text)

3. 词云图字体

选择合适的字体可以增强词云图的可读性和美观性。我们可以使用本地字体或在线字体。

wordcloud = WordCloud(font_path='path_to_font.ttf').generate(text)

4. 词云图布局

通过调整词云图的 max_font_sizemax_words 参数,我们可以控制词云图的布局和密度。

wordcloud = WordCloud(max_font_size=110, max_words=200).generate(text)

5. 词云图的交互性

为了使词云图更加生动有趣,我们可以添加交互性,如鼠标悬停显示单词频率。

from wordcloud import get_single_color_func

def color_func(word, font_size, position, orientation, random_state=None, **kwargs):
    return "hsl(0, 100%, %d%%)" % (100 - (font_size / max_font_size) * 100)

wordcloud = WordCloud(color_func=color_func).generate(text)

🔥🔥🔥道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

💖The End💖点点关注,收藏不迷路💖

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VM ubuntu终端使用Host代理的方法

1、设置网络地址转换NAT 2、在终端敲击如下命令 先敲击 ip route show 找到网关。再敲击如下命令: export http_proxyhttp://10.0.2.2:33210 export https_proxyhttp://10.0.2.2:33210 export HTTP_PROXYhttp://10.0.2.2:33210/ export HTTPS_PROXYhttp://10.0.2.…

“探索AIGC市场:腾讯元宝APP加入竞争,大模型产品的未来走向与个人选择“

文章目录 每日一句正能量前言使用体验分享独特优势和倾向选择字节豆包百度文心一言阿里通义千问腾讯元宝个人倾向选择结论 未来发展方向技术创新可持续可拓展性用户体验应用场景政府赋能数据安全与隐私保护伦理与社会责任国际合作与竞争结论 后记 每日一句正能量 不管现在有多么…

小程序视图渲染数据和部分事件的绑定

今天依旧使用这个目录进行教学 数据的渲染 在 index.js的 page中定义一个data对象结构是这样的 Page({data:{name:张三} }) 在index.wxml 中 利用模板语法进行渲染 <view >{{name}}</view> 注意这个模板里边不能使用js的方法 要循环渲染数组&#xff0c;如 在…

AIGC简介

目录 1.概述 2.诞生背景 3.作用 4.优缺点 4.1.优点 4.2.缺点 5.应用场景 5.1.十个应用场景 5.2.社交媒体内容 6.如何使用 7.未来展望 8.总结 1.概述 AIGC 是“人工智能生成内容”&#xff08;Artificial Intelligence Generated Content&#xff09;的缩写&#x…

vue element-ui 下拉框 以及 input 限制输入,小数点后保留两位 界面设计案例 和 例子:支持mp4和m3u8视频播放

vue input 限制输入&#xff0c;小数点后保留两位 以及 图片垂直居中显示 和 分享 git 小技巧-CSDN博客文章浏览阅读430次&#xff0c;点赞5次&#xff0c;收藏4次。error:Your local changes to the following files would be overwritten by merge:_error: your local change…

VS Code扩展开发介绍和快速示例

VS Code 介绍 VS Code&#xff08;Visual Studio Code&#xff09;是一款由微软开发的轻量级的免费开源的源代码编辑器&#xff0c;它支持多种操作系统&#xff0c;包括Windows、macOS和Linux。以下是对VS Code的详细介绍&#xff1a; 一、跨平台支持 VS Code是一个真正的跨…

阅读源码解析dynamic-datasource-spring-boot-starter中是如何动态切换数据源的

dynamic-datasource-spring-boot-starter是苞米豆提供的一个动态切换数据源的工具&#xff0c;可以帮助企业或者个人实现多数据源的切换&#xff0c;这里通过阅读源码的方式解析是如何动态的切换数据源的&#xff0c;采用的版本是3.5.1 源码解析 通过官方文档可以看到&#x…

HTML制作一个太阳、地球、月球之间的绕转动画

大家好&#xff0c;今天制作一个太阳、地球、月球之间的绕转动画&#xff01; 先看具体效果&#xff1a; 要制作一个太阳、地球、月球之间的绕转动画&#xff0c;我们需要结合HTML、CSS和JavaScript。由于CSS动画和JavaScript动画各有优缺点&#xff0c;这里我将给出一个使用…

LCD电子广告牌课程设计

概述 1.1课程设计简介 亮丽实用的广告牌可以给我们的生活添加光彩、可以给店铺招揽生意。传统的广告牌都是固定的汉字&#xff0c;并且时间长了会掉色&#xff0c;使汉字模糊难认&#xff0c;这就给我的生活带来很多的不便。尤其到了晚上传统广告牌就会失去其该有的作用。所以在…

空山新雨后-故事和场景搭建(一)

1、关于故事 1.故事的灵感 2.故事的表线 3.故事的里线 4.故事的参考图 5.故事的资源 6.关于音乐,听了100多首音乐选出来的 2、场景搭建 1.放入HDRI,放入PostProcessVolumn,将PostProcessVolumn设置为无限范围,将曝光补偿、Min EUV、Max EUV都设置为0,

SpringBoot Vue Bootstrap 旅游管理系统

SpringBoot Vue 旅游管理系统源码&#xff0c;附带环境安装&#xff0c;运行说明 源码地址 开发环境 jdk1.8,mysql8,nodejs16,navicat,idea 使用技术springboot mybatis vue bootstrap 部分功能截图预览

投稿要求的Cover Letter该怎么写?附全文模版+例句

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 投稿时提交的Cover letter&#xff0c;是作者写给期刊编辑的信&#xff0c;编辑在看完你的cover letter之后&#xff0c;再决定是否继续看全文。Cover Letter不会随正文一起发…

零基础直接上手java跨平台桌面程序,使用javafx(五)TableView显示excel表

我们在窗口的中间加上TableVie&#xff1a; 在hello-view.fxml的文本中&#xff0c;要增加一些代码。在TableView定义中加上fx:id"TableView1"&#xff0c;这样java代码才方便访问&#xff0c;在java代码中要加上FXML private TableView TableView1;表示定义TableVie…

JDBC开发之四大核心API:DriverManager Connection Statement ResultSet

DriverManager 方法都是静态的 注册驱动 在Mysql5之后我们就不用注册驱动了 在jar包里已经写好了 读取文件 第二个方法 如果连接的是主机mysql并且端口是默认的3306 则可以简化书写 代码书写 import java.sql.Connection; import java.sql.DriverManager; import java.sql.S…

应急管理大泽动力6寸柴油水泵的使用方法

6寸柴油水泵的使用方法可以按照以下步骤进行&#xff0c;以确保操作的安全&#xff1a; 一、准备阶段 检查设备&#xff1a;确保6寸柴油水泵及其配件完好无损&#xff0c;特别是检查水泵的密封性能&#xff0c;确保无泄漏。 准备油料&#xff1a;根据参考文章1&#xff0c;为…

解决cmd命令出现乱码问题

方法1&#xff1a;修改CMD或PS显示编码(临时且不一定生效) CMD的默认编码为gdk&#xff08;简体中文&#xff09;&#xff0c;需修改为utf-8&#xff08;万国码&#xff09; 在命令行窗口输入 CHCP 65001窗口关闭后又会恢复成默认的gdk编码形式 方法2&#xff1a;更改系统设…

注意力机制篇 | YOLOv8改进之在C2f模块引入SpatialGroupEnhance注意力模块

前言:Hello大家好,我是小哥谈。这篇文章介绍了一种轻量级的神经网络模块SGE,它可以调整卷积神经网络中每个子特征的重要性,从而提高图像识别任务的性能。SGE通过生成注意力因子来调整每个子特征的强度,有效抑制噪声。与流行的CNN主干网络集成时,SGE可以显著提高图像识别性…

ConstraintLayout遇到的坑

背景 为了降低app的卡顿率&#xff0c;项目做了一次优化&#xff0c;将首页的的滑动控件viewPager改成了viewPager2&#xff0c;前者是一次性加载所有的布局文件&#xff0c;后者只会加载目标页面的布局文件&#xff0c;减少了计算和绘制的时间。在开发完后&#xff0c;发现了…

Vue 路由传递参数 query、params

1、to的对象写法,绑定参数 <template> 2 <ul> 3 <li v-for"m in messlist" :key"m.id"> 4 <router-link :to"{ //使用params时&#xff0c;这个路径必须用name及别名......name: xiangqing, path: /bbb/message/deta…

【GreenHills】解决GHS对于“//”注释符号进行报错的问题

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决GHS对于使用“//”进行注释内容进行报错的问题 2、 问题场景 在代码中经常使用“//”进行内容注释。但是&#xff0c;在GHS中发现所有的注释信息都被显示了报错。报错信息如下图2-1。 图2-1 3、软硬件环境 1&a…