1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > ppt自制词云形状背景生成的词云图为什么还是矩形?——关键在于把png的白色背景变透明

ppt自制词云形状背景生成的词云图为什么还是矩形?——关键在于把png的白色背景变透明

时间:2024-05-02 03:28:05

相关推荐

ppt自制词云形状背景生成的词云图为什么还是矩形?——关键在于把png的白色背景变透明

在做词云图的时候,因为需要指定形状的词云图,所以想到用ppt绘制形状,将透明背景的形状另存为png图片保存到本地。

保存的图片如下:

再调用wordcloud包绘制词云图,设置词云背景为前面保存的png图片。

import jiebafrom wordcloud import WordCloudimport matplotlib.pyplot as pltfrom PIL import Imageimport numpy as npfrom imageio import imread# from scipy.misc import imread# 导入文本数据并进行简单的文本处理# 去掉换行符和空格text = open("text.txt", encoding='utf-8').read()text = text.replace('\n', "").replace("\u3000", "")# 分词,返回结果为词的列表text_cut = jieba.lcut(text)# 将分好的词用某个符号分割开连成字符串text_cut = ' '.join(text_cut)# 导入停词# 用于去掉文本中类似于'啊'、'你','我'之类的词stop_words = open("stopwords.txt", encoding="utf8").read().split("\n")background = Image.open("cloud.png").convert('RGB')# im=imread('cloud_new.png',pilmode="CMYK")graph = np.array(background)# background = imread()# 使用WordCloud生成词云word_cloud = WordCloud(scale=4, # 图片分辨率font_path="msyh.ttc", # 设置词云字体# min_font_size=30, # int (default=4) 显示的最小的字体大小# max_font_size=None, # int (default=None) 显示的最大的字体大小# font_step=4, # 字体步长,如果步长大于1,会加快运算但是可能导致结果出现较大的误差# max_words=200, # int (default=200) #要显示的词的最大个数relative_scaling=0.1, # float (default=.5) #词频和字体大小的关联性background_color="white", # 词云图的背景颜色mask=graph, # 指定词云的形状stopwords=set(stop_words)) # 去掉的停词word_cloud.generate(text_cut)# 运用matplotlib展现结果plt.subplots(figsize=(12, 8))plt.imshow(word_cloud)plt.axis("off")# plt.savefig("wordcloud.jpg")plt.show()

结果如下,不知道为什么,生成的图云还是矩形形状。

了解到ppt绘制的形状图用python读取后原本的透明背景变成了白色背景。🆗 那就用python把白色背景变透明吧。

把png的白色背景变透明

import PIL.Image as Image# 如果当前位深是32的话,可以不用写转RGBA模式的这一句,但是写上也没啥问题# 从RGB(24位)模式转成RGBA(32位)模式img = Image.open('cloud.png').convert('RGBA')W, L = img.sizewhite_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('cloud_new.png') # 自己设置保存地址

修改后的词云背景图片cloud_new.png如下:

用修改后的词云背景cloud_new.png重新跑一遍词云代码,生成的词云结果如下:

参考:/developer/article/1847968

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。