python有很多优秀的地方,现在我们使用wordcloud去制作一些好玩有趣的东西吧。
准备条件:
python 3.x,matplotlib,wordcloud,numpy+mkl,scipy
#win下的安装代码
在cmd环境下找到文件目录
python -m pip install --user numpy-3.5.3-cp35-cp35m-win_amd64.whl
python -m pip install --user scipy-0.18.1-cp35-cp35m-win_amd64.whl
python -m pip install --user wordcloud-1.2.1-cp35-cp35m-win_amd64.whl
python -m pip install --user matplotlib-2.0.0-cp35-cp35m-win_amd64.whl
以上的安装遇到的问题自己解决
以下是主要代码
from os import path
import jieba
from scipy.misc import imread
from wordcloud import WordCloud,STOPWORDS, ImageColorGenerator
import matplotlib.pyplot as plt
d = path.dirname('.')
texts = open(path.join(d, 'ww.txt')).read()
#你保存的文件里面的数据自己可以定义,数量决定了你生成图片里面内容的大小
alice_coloring = imread(path.join(d, "ww_heart.png"))
#一个心型的图片
def word_segment(texts):
jieba.analy.set_stop_words("ww.txt")
for text in texts:
tags=jieba.analyse.extract_tags(text,topK=20)
yield " ".join(tags)
def generate_img(texts):
#data=" ".join(text for text in texts)
mask_img=imread("ww_heart.png")
wc =WordCloud(
font_path='msyh.ttc',
background_color='white',
mask=mask_img
).generate(texts)
image_colors = ImageColorGenerator(alice_coloring)
plt.imshow(wc)
plt.axis('off')
plt.figure()
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis("off")
plt.figure()
plt.imshow(alice_coloring, cmap=plt.cm.gray)
plt.axis("off")
plt.show()
wc.to_file(path.join(d, "www.png"))
word_segment(texts)
generate_img(texts)
注意:
复制C:\Windows\Fonts里面的Microsoft YaHei UI文件到
C:\Users\Abit\AppData\Roaming\Python\Python35\site-packages\matplotlib\mpl-data\fonts\ttf下
不然matplotlib会出现乱码
以下是生成的图片