准备

导入必要的库

from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

生成mask/mask transform

总的来说:就是通过导入自己相要的图片作为mask遮罩
mask遮罩其实是一个代表形状的二维数组,所以我们要通过np.array()将图片转化为二维数组。

有些朋友会发现即使np.array()后mask依旧未生效,因为mask的格式不同结果往往不太一样,这时候需要transform一下(如果我们看下生成的矩阵,矩阵的数值代表像素的强度,255是纯白,1是黑色,我们的目的就是通过mask将图片的形状勾勒出来,使得wordcloud方法能正常运行)

def transform_mask(imagename):
	#这里使用的jpg,文件后缀根据自己情况改哦!
    mask = np.array(Image.open(f"./{imagename}.jpg")) 
    mask = mask[:,:,0] # transform 3d image to 2d for easier visualization
    
    # 将
    def transform_format(val):
        if val.any()== 0:
            return 255
        else:
            return val

    # Transform your mask into a new one that will work with the function
    transformed_mask = np.ndarray((aatrox_mask.shape[0],aatrox_mask.shape[1]), np.int32)

    for i in range(len(aatrox_mask)):
        transformed_mask[i] = list(map(transform_format,aatrox_mask[i]))
    
    return transformed_mask

字云颜色按图片设定

def get_image_colors(imagename):
    mask = np.array(Image.open(f"./{imagename}.jpg"))
    image_colors  = ImageColorGenerator(mask)
    return image_colors

导入图片

# Create a word cloud image
wc = WordCloud(
	background_color="white", 
	max_words=1000,
	mask=transformed_mask,
	stopwords=STOPWORDS, 
	contour_width=3)

# Generate a wordcloud
wc.generate(text) # text实质上是字频字典frequent dictionary

# show
plt.figure(figsize=[20,10])
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()

看出来是剑魔了吗?
字云颜色按图片设定例子

参考链接

  1. Generating WordClouds in Python
  2. Python-ndarray格式下三维转二维的解决方法记录
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐