主要内容
1、需要一张背景图(hang.jpg)
2、需要文本数据(comments.txt)
3、需要中文字体文件(simsun.ttc)
背景图:hang.jpg
效果图:
# encoding: utf-8
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import jieba.analyse # 导入结巴分词
import numpy as np # numpy
from wordcloud import WordCloud, STOPWORDS # 词云工具和自带的的停用词
from PIL import Image # 图片处理
import matplotlib.pyplot as plt
def handle(filename, stopword):
with open(filename, 'r') as f:
data = f.read()
wordlist = jieba.analyse.extract_tags(data, topK=100) # 分词,取前100
wordStr = " ".join(wordlist)
print wordStr
hand = np.array(Image.open('hang1.jpg')) # 打开一张图片,词语以图片形状为背景分布
my_cloudword = WordCloud(
# wordcloud参数配置
width=1024,
height=768,
background_color = 'white', # 背景颜色设置白色
mask = hand, # 背景图片
max_words = 300, # 最大显示的字数
stopwords = stopword, # 停用词
max_font_size = 100, # 字体最大值
font_path='simsun.ttc', # 设置中文字体,若是有中文的话,这句代码必须添加,不然会出现方框,不出现汉字
random_state=3, # 设置有多少种随机生成状态,即有多少种配色方案
)
my_cloudword.generate(wordStr) # 生成图片
my_cloudword.to_file('wordcloud.png') # 保存
plt.imshow(my_cloudword) # 显示词云图
plt.axis('off') # 是否显示x轴、y轴下标
plt.show() # 显示
if __name__ == '__main__':
handle('comments.txt', STOPWORDS)