词云图指定图片色系以及指定单词组颜色

文章目录

  • 1 指定图片色系
  • 2 指定单词组颜色

1 指定图片色系

默认颜色

词云图指定图片色系以及指定单词组颜色_第1张图片

找到自己想要的颜色,这里选择彩虹色

词云图指定图片色系以及指定单词组颜色_第2张图片
保存为图片

用截图软件,截取大概 500x500 的样子
词云图指定图片色系以及指定单词组颜色_第3张图片

import pandas as pd
import numpy as np
import wordcloud
from wordcloud import WordCloud
import numpy as np
from collections import Counter
import PIL
import imageio
from imageio import imread
# 词云图
import jieba
import matplotlib.pyplot as plt

前面步骤略:可以参考https://blog.csdn.net/qq_42374697/article/details/109724941

# 设置背景图片
# Mask/掩模/遮罩
# 用于控制词云的整体形状
# 指定mask后,设置的宽高值将被忽略,遮罩形状被指定图形的形状取代。
# 除全白的部分仍然保留外,其余部分会用于绘制词云。因此背景图片的画布一定要设置为白色(#FFFFFF)字的大小,布局和颜色也会基于Mask生成
# 必要时需要调整颜色以增强可视效果
# 读入图片
mask = np.array(PIL.Image.open('C:\\b.jpg'))
# 配置词云参数 
wc1 = WordCloud(
            # 设置字体
            font_path = 'C:/Windows/Fonts/STXINWEI.TTF',#必须加中文字体,否则格式错误
            # 设置背景色
            background_color='white',
            scale=1,  # 数值越大,图片越清晰,但是太大电脑可能会吃不消
            # 词云形状
            mask=mask,
            width=900, height=600,
            #max_words=300,            # 词云显示的最大词语数量
            max_font_size=60,         # 设置字体最大值
            min_font_size=3,         # 设置子图最小值
            random_state=50           # 设置随机生成状态,即多少种配色方案
            )
# 生成词云
wc1.generate_from_frequencies(dict(common_c))


imgobj = imread('C:\\Users\\Administrator\\Desktop\\彩虹图片.png')
image_colors = wordcloud.ImageColorGenerator(np.array(imgobj))
wc1.recolor(color_func=image_colors)
plt.imshow(wc1)
plt.axis('off')
plt.show()

词云图指定图片色系以及指定单词组颜色_第4张图片
报错解决:

词云图指定图片色系以及指定单词组颜色_第5张图片

在换其他的图片

词云图指定图片色系以及指定单词组颜色_第6张图片
词云图指定图片色系以及指定单词组颜色_第7张图片

词云图指定图片色系以及指定单词组颜色_第8张图片

词云图指定图片色系以及指定单词组颜色_第9张图片

2 指定单词组颜色

默认颜色

词云图指定图片色系以及指定单词组颜色_第10张图片

from wordcloud import get_single_color_func
import matplotlib.pyplot as plt
 
         
class GroupedColorFunc(object):
      
     def __init__(self , color_to_words , default_color):
         self.color_func_to_words = [
             (get_single_color_func(color) , set(words))
             for (color , words) in color_to_words.items()]
          
         self.default_color_func = get_single_color_func(default_color)
          
     def get_color_func(self , word):
         try:        
             color_func = next(
                 color_func for (color_func , words) in self.color_func_to_words
                 if word in words)
         except StopIteration:
             color_func = self.default_color_func
         return color_func
 
     def __call__(self , word , **kwargs):
          
         return self.get_color_func(word)(word , **kwargs)
 
# 指定分组色系
color_to_words ={
     
    '#00ff00':['全文','秘密','有没有','真的','请问','学校'],
    '#FF0000':['朋友','希望','同学','图书馆','考研','谢谢'],
     '#6600FF':['感觉','分享','喜欢','位置']
 
    }
default_color = 'grey'
grouped_color_func = GroupedColorFunc(color_to_words , default_color)
 
wc1.recolor(color_func = grouped_color_func)
 
plt.imshow(wc1 , interpolation = "bilinear")
plt.axis("off")
plt.show()

词云图指定图片色系以及指定单词组颜色_第11张图片

你可能感兴趣的:(文本挖掘与实战)