Python生成中文词云图(二):不可指定词云特定的形状和颜色。
什么是词云?
首先,什么是词云呢?词云又叫文字云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。
本文目的:
本篇博客主要介绍利用python的wordcloud包实现生成中文词云。不可指定词云特定的形状和颜色。
Python生成英文词云图请参见博客Python生成英文词云图。
电脑环境要求:
安装好Pycharm或者Anaconda。建议同时安装Pycharm和Anaconda,并且将Pycharm配置好Anaconda,这样就不用手动安装wordcloud包和jieba分词包等了,以后也不用安装其他一些常用的包了。
安装Pycharm和Anaconda请参见Pycharm中使用Anaconda。
代码实现:
#coding=utf-8
#Version:python3.6.0
#添加自定义分词
import jieba
from os import path #用来获取文档的路径
#词云
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
#词云生成工具
from wordcloud import WordCloud,ImageColorGenerator
#需要对中文进行处理
import matplotlib.font_manager as fm
#背景图
bg=np.array(Image.open("tuoyuan.jpg"))
#获取当前的项目文件加的路径
d=path.dirname(__file__)
#读取停用词表
stopwords_path='stopwords.txt'
#添加需要自定以的分词
jieba.add_word("叶文洁")
jieba.add_word("汪淼")
jieba.add_word("史强")
jieba.add_word("常伟思")
jieba.add_word("杨冬")
jieba.add_word("丁仪")
jieba.add_word("伊文斯")
jieba.add_word("罗辑")
jieba.add_word("章北海")
jieba.add_word("庄颜")
jieba.add_word("东方延绪")
jieba.add_word("云天明")
jieba.add_word("程心")
jieba.add_word("艾AA")
jieba.add_word("智子")
jieba.add_word("关一帆")
#读取要分析的文本
text_path="santi.txt"
#读取要分析的文本,读取格式
text=open(path.join(d,text_path),encoding="utf8").read()
#定义个函数式用于分词
def jiebaclearText(text):
#定义一个空的列表,将去除的停用词的分词保存
mywordList=[]
#进行分词
seg_list=jieba.cut(text,cut_all=False)
#将一个generator的内容用/连接
listStr='/'.join(seg_list)
#打开停用词表
f_stop=open(stopwords_path,encoding="utf8")
#读取
try:
f_stop_text=f_stop.read()
finally:
f_stop.close()#关闭资源
#将停用词格式化,用\n分开,返回一个列表
f_stop_seg_list=f_stop_text.split("\n")
#对默认模式分词的进行遍历,去除停用词
for myword in listStr.split('/'):
#去除停用词
if not(myword.split()) in f_stop_seg_list and len(myword.strip())>1:
mywordList.append(myword)
return ' '.join(mywordList)
text1=jiebaclearText(text)
#生成
wc=WordCloud(
background_color="white", #设置背景为白色,默认为黑色
width=990, #设置图片的宽度
height=440, #设置图片的高度
margin=10, #设置图片的边缘
max_font_size=50,
random_state=30,
font_path='C:/Windows/Fonts/simkai.ttf' #中文处理,用系统自带的字体
).generate(text1)
#为图片设置字体
my_font=fm.FontProperties(fname='C:/Windows/Fonts/simkai.ttf')
#产生背景图片,基于彩色图像的颜色生成器
image_colors=ImageColorGenerator(bg)
#开始画图
plt.imshow(wc)
#为云图去掉坐标轴
plt.axis("off")
#画云图,显示
#保存云图
wc.to_file("tuoyuan3.png")