1. 准备
- 安装好python,安装时包含pip 包管理工具
- pip install jieba
- pip install matplotlib
import matplotlib.pyplot as plt #数学绘图库
import jieba #分词库
from wordcloud import WordCloud #词云库
- 安装wordcloud词云库, pip install 这次装不了,需要手动下载安装
下载库文件wordcloud-1.3.3-cp36-cp36m-win_amd64.whl,适用win64-python3.6
2. 示例代码
import matplotlib.pyplot as plt #数学绘图库
import jieba #分词库
from wordcloud import WordCloud #词云库
#1、读入txt文本数据
text = open(r'D:\\Code\\Document\\tonghua.txt',"r").read()
#2、结巴分词,默认精确模式。可以添加自定义词典userdict.txt,然后jieba.load_userdict(file_name) ,file_name为文件类对象或自定义词典的路径
# 自定义词典格式和默认词库dict.txt一样,一个词占一行:每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒
cut_text= jieba.cut(text)
result= "/".join(cut_text)#必须给个符号分隔开分词结果来形成字符串,否则不能绘制词云
#print(result)
#3、生成词云图,这里需要注意的是WordCloud默认不支持中文,所以这里需已下载好的中文字库
#无自定义背景图:需要指定生成词云图的像素大小,默认背景颜色为黑色,统一文字颜色:mode='RGBA'和colormap='pink'
wc = WordCloud(font_path=r"D:\\Code\\Python\\Monaco Yahei.ttf",background_color='white',width=800,height=600,max_font_size=50,
max_words=1000)#,min_font_size=10)#,mode='RGBA',colormap='pink')
wc.generate(result)
wc.to_file(r"D:\\Code\\Python\\cat.png") #按照设置的像素宽高度保存绘制好的词云图,比下面程序显示更清晰
# 4、显示图片
plt.figure("词云图") #指定所绘图名称
plt.imshow(wc) # 以图片的形式显示词云
plt.axis("off") #关闭图像坐标系
plt.show()
中文词云注意编码问题,以下代码实现了中文词云,加入了停用词库,可以自定义词云形状
# -*- coding: utf-8 -*-
#wordcloud生成中文词云
from wordcloud import WordCloud
import codecs
import jieba
#import jieba.analyse as analyse
from scipy.misc import imread
import os
from os import path
import matplotlib.pyplot as plt
from PIL import Image, ImageDraw, ImageFont
# 绘制词云
def draw_wordcloud():
#读入一个txt文件
comment_text = open('D:\\Code\\Python\\text\\tonghua.txt','r',encoding='gb18030').read()
#读取本地停当词库
stopwords = open('D:\\Code\\Python\\text\\stopwords.txt','r',encoding='utf-8').read().split("\n")
#结巴分词,生成字符串,如果不通过分词,无法直接生成正确的中文词云
cut_text = " ".join(jieba.cut(comment_text))
d = path.dirname(__file__) # 当前文件文件夹所在目录
color_mask = imread("D:\\Code\\Python\\text\\fangzi.png") # 读取背景图片
cloud = WordCloud(
#设置字体,不指定就会出现乱码
font_path="D:\\Code\\Python\\text\\Monaco Yahei.ttf",
#font_path=path.join(d,'simsun.ttc'),
#设置背景色
background_color='black',
stopwords= stopwords,
#词云形状
mask=color_mask,
#允许最大词汇
max_words=200,
#最大号字体
max_font_size=400
)
word_cloud = cloud.generate(cut_text) # 产生词云
word_cloud.to_file("pjl_cloud4.jpg") #保存图片
# 显示词云图片
plt.imshow(word_cloud)
plt.axis('off')
plt.show()
if __name__ == '__main__':
draw_wordcloud()