記錄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