关于定制词云的学习- 2020年2月22日16:28:19
这里是引用:https://www.cnblogs.com/randysun/p/11215095.html
一.第一个库,wordcloud库
1.1 库的基本方法构建函数
w = wordcloud.WordCloud()
1.2 wordcloud库的常规方法
方法 | 描述 |
---|---|
w.generate(txt) | 向WordCloud对象w中加载文本txt,w.generate("Python and WordCloud") |
w.to_file(filename) | 将词云输出为图像文件,.png或.jpg,w.to_file(“outfile.png”) |
- 步骤1:配置对象参数
- 步骤2:加载词云文本
- 步骤3:输出词云文件
import wordcloud
w = wordcloud.WordCloud()
w.generate("this is me")
w.to_file("output.png") #方法一直接输出文件
msk = w.to_image() #直接在当前界面输出
msk.show() #直接展示出来
1.3 配置对象参数
参数 | 描述 |
---|---|
width | 指定词云对象生成图片的宽度,默认400像素 |
height | 指定词云对象生成图片的高度,默认200像素 |
min_font_size | 指定词云中字体的最小字号,默认4号 |
max_font_size | 指定词云中字体的最大字号,根据高度自动调节 |
font_step | 指定词云中字体字号的步进间隔,默认为1 |
font_path | 指定字体文件的路径,默认None |
max_words | 指定词云显示的最大单词数量,默认200 |
stop_words | 指定词云的排除词列表,即不显示的单词列表 |
mask | 指定词云形状,默认为长方形,需要引用imread()函数 |
background_color | 指定词云图片的背景颜色,默认为黑色 |
1.4 实例将三体小说输出词云
1.4.1 开始写
import wordcloud
w = wordcloud.WordCloud()
w.genrate("santi.txt")
msk = w.to_image()
msk.show()
1.4.2 问题
这里有个问题就是没有读取santi.txt,所以要用到open函数继续重新写入open
import wordcloud
w = wordcloud.WordCloud()
f = open("santi.txt","r")
text = f.read()
w.generate(text)
msk = w.to_image()
msk.show()
1.4.3 显然遇到了新的问题那是因为wordcloud没有指定字体的原因,在这里我们重新给指定字体font_path即 wordcloud.WordCloud(font_path=r’C:\Windows\Fonts\simhei.ttf’)
C:\Windows\Fonts\这是里是系统的字体的路径,继续我们重新构造代码:
import wordcloud
w = wordcloud.WordCloud(font_path="C:\Windows\Fonts\simhei.ttf")
f = open("santi.txt","r")
text = f.read()
w.generate(text)
msk = w.to_image()
msk.show()
1.4.4这里虽然成功了但是有个问题就是显示的太小
默认是400*200像素 那么我们可以继续加参数 指定宽和高以及背景颜色都可以
w = wordcloud.WordCloud(font_path="C:\Windows\Fonts\simhei.ttf",width=800,height=600)
1.5关于生成一个带形状的词云
看到很多同学对生成一个形状词云感兴趣那么我们就来做一个带形状的词云,这里用到的包是PIL以及numpy
思路是
import wordcloud
from PIL import Image as image
import numpy as np
w=wordcloud.WordCloud(mask=mk)
f = open('santi.txt','r') #打开文档
text = f.read()
mask = np.array(image.open('ceshi.jpg')) #使用np函数制作一个图层让文字只在图像层显示。
w = wordcloud.WordCloud(font_path=r'C:\Windows\Fonts\simhei.ttf',mask=mask,background_color="white",width=800,height=600)
w.generate(text) #向wordcloud中加载文档
w.to_file("pywordcloud.png") #以图片的形式输出
img = w.to_image() #或者直接展示输出
img.show() #或者直接展示输出
1.5.1关于汉字切割,
有的朋友说需要把汉字切割那就可以继续引入jieba函数,但是我没用到
import jieba #切割汉字
def text_cn(text):
new_text = jieba.cut(text)
return new_text
知识点:
1.关于numpy的array的使用
2.关于PIL中的Image的使用 image.open()
3.以及wordcloud库的使用