用python制作词云
#加载模块
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
import jieba
from wordcloud import WordCloud, ImageColorGenerator
# 初始化jieba
jieba.initialize()
# 导入停用词,“我们”这一类没有意义的词
path = R"/Volumes/linxianqin/notebook/stopwords.txt"
# 将停用词的前后的空格去掉
stopwords = set([line.strip() for line in open(path, encoding="utf8")])
#导入字典,名字一类特殊的词
mydict_path = R"/Volumes/linxianqin/notebook/mydict.txt"
jieba.load_userdict(mydict_path)
#需要分词的源文件
txt = r"/Volumes/linxianqin/notebook/琅琊榜.txt"
#打开文件
with open(txt, encoding="utf8") as f:
text = f.read() #读取文件的内容
seg_list1 = jieba.cut(text) #分词 分完为可迭代的对象
seg_list = " ".join(seg_list1) #用空格 连接各个词
#字体!这里导入中文字体,不然得到的词云全是乱码
font_path = R"/Users/yixia/Desktop/HYZhuZiChaoRanTiW.ttf"
#设置参数
wordcloud = WordCloud(font_path=font_path, #字体参数 #更多参数按shift+tab
background_color="black", #背景颜色
margin=5, #边距
width=1200, #图片的尺寸大小
height=760,
max_font_size=150, #最大的词大小150
stopwords=stopwords) #停用词
#分咯
wordcloud = wordcloud.generate(seg_list) #读入分词
#将结果到出文件
wordcloud.to_file("琅琊榜.png") # 可选择直接导出为png文件
#显示图片
plt.figure()
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
结果展示
#以上就可以实现最简单的词云啦
#下面是以图片为背景,制作词云
#读入照片 用照片做为词云背景
mask = np.array(Image.open(R"/Volumes/linxianqin/notebook/梅长苏.jpg"))
#设置参数
wordcloud = WordCloud(font_path=font_path,
background_color="black",
mask = mask, #比没用照片多了一个参数
margin=5,
width=1200, #有照片这些参数没有用了 以原图的大小输出词云图片
height=760,
max_font_size=150,
stopwords=stopwords)
#如果你想词的颜色跟你照片的颜色一样,还要用这个参数
wordcloud.recolor(color_func=image_color )
#生成
wordcloud = wordcloud.generate(seg_list)
#wordcloud.to_file("琅琊榜_1.png")
#显示图片
plt.figure()
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
结果展示 (男主本人)