**
词云图制作笔记 前期准备**
今天学习了一下python制作各种形状的词云图
首先我遇到的问题是python没有装在c盘
在cmd中找不到python和其下的pip
解决方法是在我的电脑属性高级设置path中添加一个含有python程序的路径
之后碰到的问题就是pip下载数据太慢
后来查询网络知道了我们可以从清华的镜像下载该库
具体指令为(下面这句是在用pip下载matplotlib)
C:\Users\NEKO>python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib
效果拔群
之后也许你还会缺少一些库 比如捷霸分词(结巴分词这个名字不知道是从哪里出来的) 不过用pip挨个下载下来就好了
关于制作词云图,它可以自动的整理词频,并且按照你想要的形状生成词云图具体操作如下
最重要的也是第一步,其实是分词
先介绍一下import的三种情况
import jieba 这是把捷霸库全部引用了 类似于c的#include<stdio.h>
import matplotlib.pyplot as plt 顾名思义 他是为了把一个特别长的函数简化(as)去一个新名字 这个就是给那一长串取了一个新名字plt
from wordcloud import WordCloud,STOPWORDS 而这句话是从这个库中引用了几个新的类 而不是全部引用,也很方便
知道上述的条件,我们来引用需要的库函数
import re #排除某些符号
import jieba #分词库
from wordcloud import WordCloud,STOPWORDS #云图生成
import matplotlib.pyplot as plt #制图并且显示
其实matplotlib是wordcloud运行必须要使用的,他俩相辅相成
text = open("analysis.txt",'r',encoding='utf-8').read() #读取想要的文本
resultword=re.sub("[A-Za-z0-9\[\`\~\!\@\#\$\^\&\*\(\)\=\|\{\}\'\:\;\'\,\[\]\.\<\>\/\?\~\。\@\#\\\&\*\%]", "",text)
#这一句是为了排除所有的英文和标点
mytext = jieba.cut(resultword,cut_all=False) #这句话才是正宗的分词,如果你不懂后面的cut_all=False 请前往jieba分词基础学习精确分词和普通分词的区别
wt = " /".join(mytext) #.join的作用是把所有的空格用/代替掉,这样就分出了一堆带有/的句子
接下来的目的是取消一些没有用的词 比如地名这些干扰你生成词云图的文字
顺带一提你不用担心像“的”“我”“他”这类词会被分出来,分词的时候会消除掉的
sw=set(STOPWORDS) #设置了要调过的词
sw.add("长安")
sw.add("公主")
准备工作做完了 最重要的制图出现了!
wc = WordCloud(scale=6 ,#这一条决定了图片的清晰度,越高越难渲染
background_color = "white", #设置背景颜色
max_words = 100, #设置最大显示的字数
font_path = "simhei.ttf", #设置中文字体,词云默认字体是“DroidSansMono.ttf字体库”,不支持中文
max_font_size = 80, #最大的字体大小
stopwords=sw,#这是要排除掉的词
mask=plt.imread('heart.jpg'), #这个背景图决定了你的云图长什么样,要注意字体和这个图片都要跟源文件(.py)放在一个文件夹里,不然他找不到
random_state = 30, #设置有多少种随机生成状态,即有多少种配色方案
) #wordcloud就是一个类 生成的时候我们在这里设置它的参数
在此之后我们就可以试着去生成他们了
mycloud= wc.generate(wt) #决定有哪些词要被放进这个词云图
plt.imshow(mycloud) #下面三行都是生成图像的必要操作 缺一不可 如果不关掉axis会导致出现坐标系 很难看 一看就知道是fake云图
plt.axis("off")
plt.show()
如果你希望在生成云图的同时可以有存储一个图片文件
那么最后一句
mycloud.to_file('result.jpg') #存储图片在当前文件夹
这就是我最近学到的所有有关python生成词云图的知识 我感觉挺好的 接下来可以学习爬虫在网站分析数据(比如微博) 这样就可以做一些有意义的研究了
下面附几张图片吧
用来背景的图片和云图
谢谢大家~ 这是随便找网上的小说分析的结果