python 按指定图片背景绘制词云图

目录

概念界定

准备

实现

结果


概念界定

词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨。

准备

参考:

Python生成词云图太简单了|拿来就用能的Python词云图代码 - 知乎

环境:python3.8,使用库jieba、wordcloud、matplotlib、imageio

库介绍:Jieba库是优秀的中文分词第三方库,中文文本需要通过分词获得单个的词语。Jieba库的分词原理:利用一个中文词库,确定汉字之间的关联概率,汉字间概率大的组成词组,形成分词结果。除了分词,用户还可以添加自定义的词组。

WordCloud 是一款python环境下的词云图工具包,同时支持python2和python3,能通过代码的形式把关键词数据转换成直观且有趣的图文模式。

 IMAIO是一个Python自带库,它提供了一个简单的接口来读取和写入大量的图像数据,包括动画图像、体积数据和科学格式。它是跨平台的,运行在Python 2 .x和3。x上,并且易于安装。
imageio.imread()    #从指定的文件读取图像。返回一个NUMPY数组,该数组带有元数据的元属性。注意,图像数据按原样返回,并且可能不总是具有uTI8的dType(因此可能不同于例如PIL返回)。

实现

首先使用jieba分词获得词和词频的字典。过程可参照我之前的文章:Python 应用-jieba分词1:进行批量文本分词

将分词结果(词和词频)根据给定的图片样式生成词云图(注意原图色调要分明,这里给个小建议:如果是按几个文字展示词云图,向本文这样的,可以使用word做艺术字之后截图),首先将图片转为numpy矩阵,每个元素是一个三维数组(rgb)组成,将矩阵作为参数传入绘制词云图的方法中。

# 绘制词云
jpg = Image.open(r'人才引进.png')#图片形状
mask = np.array(jpg) #将图片转换为数组
print(mask)
# 显示生成的词云图片
my_cloud = WordCloud(
    background_color='white',  # 设置背景颜色白色
    width=1000, height=500,   #宽度1000像素,高度860像素
    scale=2,        # 比列放大  数值越大  词云越清晰
    font_path='simhei.ttf',   # 设置字体为黑体
    mask=mask,
    max_words=500,
    #random_state=5          # 设置随机生成状态,即多少种配色方案
).generate_from_frequencies(dict(stop_words_counts))#stop_words_counts是分词结果
#image_colors = ImageColorGenerator(jpg)#根据背景图片设置颜色
plt.subplots(figsize=(12,8),dpi=500)
plt.imshow(my_cloud , interpolation='bilinear')# 用plt显示图片
# 显示设置词云图中无坐标轴
plt.axis('off')#去除坐标轴
#plt.show()
my_cloud.to_file("mywordcloud.png")

结果

要使用Python绘制词云图,可以使用Python第三方库`wordcloud`。这个库可以根据给定的文本数据生成词云图。要生成带有背景图片词云图,可以使用`WordCloud`类的`mask`参数。 以下是一个示例代码,演示如何使用`wordcloud`库生成带有背景图片词云图: ```python from wordcloud import WordCloud, STOPWORDS import matplotlib.pyplot as plt from PIL import Image import numpy as np # 读取文本文件 text = open('text.txt', 'r', encoding='utf-8').read() # 读取背景图片 background = np.array(Image.open("background.png")) # 创建停用词集合 stopwords = set(STOPWORDS) stopwords.add("said") # 创建词云对象 wc = WordCloud(background_color="white", max_words=2000, mask=background, stopwords=stopwords, contour_width=3, contour_color='steelblue') # 生成词云图 wc.generate(text) # 显示词云图 plt.imshow(wc, interpolation='bilinear') plt.axis("off") plt.show() ``` 在上面的代码中,首先使用`open`函数读取文本文件,然后使用`np.array`函数读取背景图片。接着创建停用词集合,用于过滤掉一些常见的词语,比如“said”。然后创建`WordCloud`对象,设置一些参数,比如背景颜色、最大词数、掩膜图片、停用词等。最后使用`generate`方法生成词云图,使用`imshow`方法显示词云图。 注意,该代码中使用了词云图的默认字体。如果你想更改字体,可以在创建`WordCloud`对象时使用`font_path`参数,指定你想要使用的字体文件路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艽野尘梦better

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值