记录wordcloud库背景图的设置及样板
之前介绍了wordcloud的基本使用wordcloud的基本使用,本文记录一下如何设置背景图。
样图
背景图
tim.jpg
生成样图
dream.png
样板
from PIL import Image,ImageSequence
image= Image.open('tim.jpg')#打开背景图
graph = np.array(image)#读取背景图
wc = WordCloud(font_path='/usr/share/fonts/winfonts/simfang.ttf',
background_color='White',
max_words=30,
mask=graph)
#通过mask参数设置图片背景,必须要写上。有mask参数再设定宽高是无效的
完整代码
#通过对歌词文件lyrics.txt的内容分析,提取前50个权重高的词,按照tim.jpg的样式,生成词云图。
import jieba.analyse
import numpy as np
from PIL import Image,ImageSequence
from wordcloud import WordCloud,ImageColorGenerator
#读取歌词
lyric= ''
f=open('lyrics.txt','r')
for i in f:
lyric+=i
#用jieba.analyse分词,分析权重
result=jieba.analyse.textrank(lyric,topK=50,withWeight=True)
#string:待处理语句,topK:关键字的个数,默认20,#withWeight:是否返回权重值,默认false,allowPOS:是否仅返回指定类型,默认为空
#返回的result为列表类型
keywords = dict()
for i in result:
keywords[i[0]]=i[1]
print(keywords)
image= Image.open('tim.jpg')#打开背景图
graph = np.array(image)#读取背景图
wc = WordCloud(font_path='/usr/share/fonts/winfonts/simfang.ttf',background_color='White',max_words=30,mask=graph)
#font_path:设置字体,max_words:出现的最多词数量,mask参数=图片背景,必须要写上,另外有mask参数再设定宽高是无效的
wc.generate_from_frequencies(keywords)#按词出现的频率
wc.to_file("ly.jpg")
ly.jpg
如果想要使用原来背景图的颜色,则可以用下面的代码(标了新加入):
import jieba.analyse
from PIL import Image,ImageSequence
import numpy as np
from wordcloud import WordCloud,ImageColorGenerator
#读取歌词
lyric= ''
f=open('lyrics.txt','r')
for i in f:
lyric+=i
#用jieba.analyse分词,分析权重
result=jieba.analyse.textrank(lyric,topK=50,withWeight=True)
#string:待处理语句,topK:关键字的个数,默认20,#withWeight:是否返回权重值,默认false,allowPOS:是否仅返回指定类型,默认为空
#返回的result为列表类型
keywords = dict()
for i in result:
keywords[i[0]]=i[1]
print(keywords)
image= Image.open('tim.jpg')#打开背景图
graph = np.array(image)#读取背景图
wc = WordCloud(font_path='/usr/share/fonts/winfonts/simfang.ttf',background_color='White',max_words=30,mask=graph)
#font_path:设置字体,max_words:出现的最多词数量,mask参数=图片背景,必须要写上,另外有mask参数再设定宽高是无效的
wc.generate_from_frequencies(keywords)#按词出现的频率
#新加入
image_color = ImageColorGenerator(graph)#从背景图片生成颜色值
wc.recolor(color_func=image_color)
wc.to_file("ly.jpg")
ly.jpg