第一、理论准备
1 读取图片背景
bimg = imread(imgFilePath)
2 获取图片颜色
bimgColors=ImageColorGenerator(bimg)
3 重制词云的颜色
wordcloud.recolor(color_func=bimgColors)
第二、案例代码实践
# 读取文件的内容
import codecs;
content=[]
f=codecs.open("D:\\database\\python\\2.5\\红楼梦.txt",'r','utf-8')
content=f.read()
f.close()
#分词
import jieba;
import pandas;
segments=[]
jieba.load_userdict(
'D:\\database\\python\\2.5\\红楼梦词库.txt')
segs =jieba.cut(content)
for seg in segs:
if len(seg) >1 :
segments.append(seg);
segmentDF=pandas.DataFrame({'segment':segments})
# 移除停用词
stopwords= pandas.read_csv(
'D:\\database\\python\\2.5\\StopwordsCN.txt',
encoding='utf-8',
index_col=False,
quoting=3,
sep="\t")
segmentDF=segmentDF[
~segmentDF.segment.isin(stopwords.stopword)]
wystopword=pandas.Series([
'之', '其', '或', '亦', '方', '于', '即', '皆', '因', '仍', '故',
'尚', '呢', '了', '的', '着', '一', '不', '乃', '呀', '吗', '咧',
'啊', '把', '让', '向', '往', '是', '在', '越', '再', '更', '比',
'很', '偏', '别', '好', '可', '便', '就', '但', '儿',
'来', '去', '道', '笑', '说',
#空格
' ', ''])
segmentDF=segmentDF[
~segmentDF.segment.isin(wystopword)]
# 词频统计
import numpy;
segstat=segmentDF.groupby(
by="segment")["segment"].agg({
"计数":numpy.size
}).reset_index().sort_values(
"计数",ascending=False
)
segstat.head(100);
# 绘制词云
from wordcloud import WordCloud
import matplotlib.pyplot as plt
wordcloud = WordCloud(
font_path='D:\\database\\python\\2.5\\simhei.ttf',
background_color="black")
words = segstat.set_index('segment').to_dict()
wordcloud.fit_words(words['计数'])
plt.imshow(wordcloud)
plt.show(wordcloud)
plt.close();
# 词云美化
from scipy.misc import imread
from wordcloud import WordCloud,ImageColorGenerator
import matplotlib.pyplot as plt
bimg=imread("D:\\database\\python\\2.5\\贾宝玉.png")
wordcloud = WordCloud(
mask=bimg,
font_path='D:\\database\\python\\2.5\\simhei.ttf',
background_color="white")
wordcloud=wordcloud.fit_words(words['计数'])
bimgColor=ImageColorGenerator(bimg)
plt.axis("off") # 不显示坐标标题
plt.imshow(wordcloud.recolor(color_func=bimgColor))
plt.show()
# 词云美化2
from scipy.misc import imread
from wordcloud import WordCloud,ImageColorGenerator
import matplotlib.pyplot as plt
bimg=imread("D:\\database\\python\\2.5\\贾宝玉2.png")
wordcloud = WordCloud(
mask=bimg,
font_path='D:\\database\\python\\2.5\\simhei.ttf',
background_color="white")
wordcloud=wordcloud.fit_words(words['计数'])
plt.figure(
num=None,
figsize=(8,6),dpi=80,
facecolor='w',edgecolor='k')
# 分别表示 对象标记、大小、分辨率、背景颜色、边框颜色
bimgColor=ImageColorGenerator(bimg)
plt.axis("off") # 不显示坐标标题
plt.imshow(wordcloud.recolor(color_func=bimgColor))
plt.show()