在绘制词云图时发现有的字颜色为黄色导致看不清因此需要修改整个词云图的色调为冷色调
具体的来说
wordcloud中的color_func 参数使得我们能够自定义颜色函数
1
2
3
4
5
|
def random_color_func(word = None , font_size = None , position = None , orientation = None , font_path = None , random_state = None ): h = randint( 120 , 250 ) s = int ( 100.0 * 255.0 / 255.0 ) l = int ( 100.0 * float (randint( 60 , 120 )) / 255.0 ) return "hsl({}, {}%, {}%)" . format (h, s, l) |
其中 h既表示颜色的取值范围,我们可以谷歌colour picker 查看各颜色的取值范围对应的h值
这里博主为取蓝绿色所以令h的范围在120到250之间,大家可以自己修改
最后在参数中设置 color_func = random_color_func
即可
补充:python中使用wordcloud库生成的词云改为统一颜色的方法
在网上找了一个多小时都没找到办法,去看wordcloud官网也没找到操作方法,干脆就直接看源代码了
然后从里面复制出来一小段代码:
1
|
color_func = lambda * args, * * kwargs: "red" |
把这段代码与字体之类的参数一起赋给词云变量就可以了,如下:
1
2
|
w = wordcloud.WordCloud(font_path = 'msyh.ttc' ,mask = mianju,\ width = 1000 ,height = 700 ,background_color = 'white' ,mode = 'RGBA' ,color_func = lambda * args, * * kwargs: "red" ) |
以下是完整代码,和相应名称的图片和文本文档放一起就成了
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import jieba import wordcloud import imageio zhezhao = imageio.imread( '图片遮罩.jpg' ) #用imageio替代目前已经移除image的scipy库 f = open ( '这是一个文本.txt' , 'r' ,encoding = 'utf-8' ) t = f.read() f.close() ls = jieba.lcut(t) txt = ' ' .join(ls) w = wordcloud.WordCloud(font_path = 'msyh.ttc' ,mask = zhezhao,\ width = 1000 ,height = 700 ,background_color = 'white' ,mode = 'RGBA' ,color_func = lambda * args, * * kwargs: "red" ) w.generate(txt) w.to_file( '这是生成的图片.png' ) |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/u010152318/article/details/80242460