Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >python之生成带背景的词云图(附源码)

python之生成带背景的词云图(附源码)

作者头像
不止于python
发布于 2023-09-05 06:22:34
发布于 2023-09-05 06:22:34
85500
代码可运行
举报
文章被收录于专栏:不止于python不止于python
运行总次数:0
代码可运行

1

所需模块

jieba: 中文分词库

pillow: 用于处理图像的Python

wordcloud: 词云图模块

matplotlib: 用于绘制图表和可视化

numpy: 用于科学计算和数值操作的Python库

2

模块安装

pip3.7 install wordcloud

pip3.7 install pillow

pip3.7 install matplotlib

pip3.7 install jieba

pip3.7 install numpy

一般报错情况下, 可以通过升级包解决 pip3.7 install -U 包名

3

本地测试版本

numpy 1.19.4

jieba 0.42.1

matplotlib 3.5.3

wordcloud 1.9.2

Pillow 9.5.0

4

源码

废话就不说了, 直接上源码, 把源码简单的封装了一下, 可以直接CV使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding: utf-8 -*-
# @Author: Mehaei
# @Date: 2023-08-29 20:23:38
# @Last Modified by: Mehaei
# @Last Modified time: 2023-08-30 20:31:54
# 导入需要使用的模块
import matplotlib.pyplot as plt
import jieba
import wordcloud
from wordcloud import ImageColorGenerator
import numpy as np
from PIL import Image


class genCordCloudPic(object):
    """
    生成词云图类
    """
    def __init__(self, ftext, fbg=None, fsave="wordcloud.png"):
        """
        :param ftext: 文本文件路径
        :param fbg: 背景图片路径
        :param fsave: 词云图片保存路径
        """
        self.ftext = ftext
        self.fbg = fbg
        self.fsave = fsave

    def getWord(self):
        """
        读取文本文件
        """
        with open(self.ftext, 'r+') as f:
            text = f.read()
        cut_text = jieba.cut(text)
        return ' '.join(cut_text)

    def save_pic(self, use_bg_color=False, **wordcloud_kwargs):
        """
        保存词云图
        :param use_bg_color: 使用背景图片颜色渲染词云图的颜色
        """
        word = self.getWord()
        if not word:
            raise ValueError("分词结果为空")
        if not self.fbg:
            raise ValueError("背景图片为空")
        pic = np.array(Image.open(self.fbg))
        # 生成图片颜色中的颜色
        image_colors = ImageColorGenerator(pic)
        wd = wordcloud.WordCloud(
            mask=pic,
            font_path='97txj03p17q39w692ecpjely52o1v6z9.ttf',
            background_color='white',
            max_font_size=100,
            scale=2,
            max_words=500,
            **wordcloud_kwargs
        ).generate(word)
        if use_bg_color:
            wd.recolor(color_func=image_colors)
        plt.imshow(wd, interpolation='bilinear')
        # 关闭显示x轴、y轴下标
        plt.axis('off')
        plt.show()
        wd.to_file(self.fsave)

5

使用方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 生成随机颜色的图片
# gccp = genCordCloudPic("text.txt", "goutou.png", "random_color.png")
# gccp.save_pic()


# 生成与背景图片颜色一致的图片
gccp = genCordCloudPic("text.txt", "goutou.png", "bg_color.png")
gccp.save_pic(use_bg_color=True)

6

效果图

背景图片

随机颜色词云图

使用背景图片颜色的词云图

注意: 应尽量使用白色背景的图片, 当生成的词云图不协调时, 可以调整字体大小或词语个数 等参数来优化词云图, 使用中文做词云图时, 应指定字体文件, 否则会出现方格的情况

7

其它常用参数

wordcloud.WordCloud 类是用于生成词云图像的主要类常用参数及示例

1. width 和 height: 指定生成词云的图像宽度和高度。

示例: WordCloud(width=800, height=400)

2. background_color: 指定词云的背景颜色。

示例: WordCloud(background_color='white')

3. mask: 用于指定词云的形状,可以是一个图像或图像的路径。

示例: WordCloud(mask=mask_image)

4. font_path: 指定生成词云时使用的字体文件路径,用于显示中文字符。

示例: WordCloud(font_path='your_font_file.ttf')

5. max_words: 指定最大显示的单词数量。

示例: WordCloud(max_words=100)

6. stopwords: 设置要过滤的停用词列表,这些词不会在词云中显示。

示例: WordCloud(stopwords=['and', 'the', 'in'])

7. collocations: 是否考虑词组搭配,默认为 True。

示例: WordCloud(collocations=False)

8. prefer_horizontal: 设置词云中词语的方向,True 为水平,False 为垂直。

示例: WordCloud(prefer_horizontal=True)

9. minfontsize 和 maxfontsize: 设置词云中单词的最小和最大字体大小。

示例: WordCloud(min_font_size=10, max_font_size=50)

10. background_color: 设置词云图像的背景颜色。

示例: WordCloud(background_color='white')

11. random_state: 设置随机种子,保证每次生成的词云图像是一致的。

示例: WordCloud(random_state=42)

更多参数, 参考官方文档

https://amueller.github.io/word_cloud/generated/wordcloud.WordCloud.html#wordcloud.WordCloud

8

完整项目地址

https://github.com/Mehaei/wordcloud

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Kubeadm快速部署Kubernetes1.13版本
kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具 ,这个工具能通过两条指令完成一个kubernetes集群的部署,比纯手工安装方便。
kubernetes中文社区
2019/06/24
6280
Kubeadm快速部署Kubernetes1.13版本
kubernetes-1:使用kubeadm搭建K8S单master节点集群
现在官方推荐的是kubespray,但也是基于kubeadm;除此之外,还有kind,minikube,但是并不试用于部署生产级别集群。
千里行走
2019/07/03
2.1K0
国内环境Kubernetes v1.12.1的安装与配置
版权声明:本文为耕耘实录原创文章,各大自媒体平台同步更新。欢迎转载,转载请注明出处,谢谢
耕耘实录
2018/12/20
1.6K0
Ansible部署k8s集群
安装Ansible # 更换清华源 sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \ -e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \ -i.bak \ /etc/yum.repos.d/CentOS-*.repo # 更换阿里epel curl -o /etc/yum.repos
Yuou
2022/09/26
4820
kubernetes部署:基于kubeadm的国内镜像源安装
Kubernetes 1.8开始要求关闭系统的Swap,如果不关闭,默认配置下kubelet将无法启动,关闭系统的Swap方法如下:
机械视角
2019/10/23
16.2K0
kubernetes部署:基于kubeadm的国内镜像源安装
在 Ubuntu 上安装 K8S教程
如果系统本身自带得镜像地址,服务器在国外,下载速度会很慢,可以打开 /etc/apt/sources.lis 替换为国内得镜像源。
痴者工良
2021/04/26
14.3K0
kubeadm安装kubernetes V1.11.1 集群
如果想要用二进制方法安装最新版本的Docker,可以参考我之前的文章在Redhat 7.3中采用离线方式安装Docker
大江小浪
2018/07/25
1.5K0
kubeadm安装kubernetes V1.11.1 集群
腾讯云CVM上用kubeadm安装Kubernetes集群(版本1.14.0)
kubeadm是Kubernetes官方提供的用于快速安装 Kubernetes 集群的工具,通过将集群的各个组件进行容器化安装管理,通过kubeadm的方式安装集群比二进制的方式安装要方便
马凌鑫
2019/04/02
4.1K0
Kubernetes(k8s)1.12.2集群搭建
这里指定了docker和kubelet的版本,如果不指定的话默认下载最新的版本,如果你的服务器可以上Google的话可以选择执行以下命令下载最新版
Java学习录
2019/04/18
8490
使用kubeadm在腾讯云上搭建Kubernetes集群
2.关闭seleniux、iptables、firewalld和NetworkManage
pengsiryan
2020/03/20
2.3K0
kubernetes系列教程(四)离线升级kubernetes集群
kubernetes版本升级迭代非常快,每三个月更新一个版本,很多新的功能在新版本中快速迭代,为了与社区版本功能保持一致,升级kubernetes集群,社区已通过kubeadm工具统一升级集群,升级步骤简单易行。首先来看下升级kubernetes集群需要升级那些组件:
HappyLau谈云计算
2019/09/15
4.3K0
kubernetes系列教程(四)离线升级kubernetes集群
使用 kubeadm 部署 kubernetes 1.13.1
最近有时间重新学习 k8s。k8s 的安装比之前简单了许多,本文介绍如何使用 kubeadm 部署 kubernetns 1.13.1
tanmx
2019/01/03
2.8K0
kubernetes项目部署
上面设置好以后,配置会自动通过连接api server最终存储到etcd中去。但是上面的配置过程十分的复杂,除非你对网络十分的属性
曲奇小点点
2024/08/26
1120
kubernetes项目部署
快速解决Kubernetes从k8s.gcr.io仓库拉取镜像失败问题
 在部署Kubernetes的过程中,需要从k8s.grc.io仓库中拉取部署所需的镜像文件,但是由于国内对国外的防火墙问题导致无法正常拉取,下面介绍一个方法来解决此问题,完成Kubernetes的正常部署。
非著名运维
2022/06/22
4.9K1
kubeadm实现K8S的HA
(1)k8s各节点SSH设置免密登录 所有节点用root用户操作,全部设置免密登陆,不做细分。
用户1499526
2019/07/15
1.2K0
kubeadm搭建单master节点1.20版本kubernetes集群
由于是云服务器,selinux、firewalld、swap都会默认关闭,iptables规则也会清空,所以仅需要配置下主机名、hosts文件以及配置下kubernetes的转发规则就好,如下:
唐旭
2021/11/02
1.6K1
详解kubeadm安装k8s集群常见问题
因为kubeadm需要用到容器,这些镜像都是k8s.gcr网站,因为众所周知的原因,国内是访问不到的,所以无法创建成功。,从其他地方下载。我在docker hub上发现了kubernetes的同步库gotok8s,应该是官方同步过来了,更新比较及时,版本也相互对应,配置好加速器下载也非常快。如果对应版本的库不存在,就找版本相近的(kube开头的几个库版本要相同),在安装的时候指定好对应的版本。
星星在线
2020/10/23
1.4K0
详解kubeadm安装k8s集群常见问题
CentOS7系统上Kubernetes集群搭建
在自己的Mac系统里面利用Parallels Desktop创建3台虚拟机,具体信息如下:
chengcheng222e
2021/11/04
1.8K0
kubeadm部署kubernetes集群
(3) 生成Kube Config文件,kubelet需要用这个文件与Master通信。
星哥玩云
2022/07/28
3250
K8S 之 kubeadm 安装
Kubeadm 是一个工具,它提供了 kubeadm init 以及 kubeadm join 这两个命令作为快速创建 kubernetes 集群的最佳实践。
YP小站
2020/06/04
1.6K0
推荐阅读
相关推荐
Kubeadm快速部署Kubernetes1.13版本
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验