笔搜屋

繁体版 简体版
笔搜屋 > python代码 > 第7章 词云(2)

第7章 词云(2)

章节错误,点此举报(免注册),举报后维护人员会在两分钟内校正章节内容,请耐心等待,并刷新页面。

前面已经提到过词云的基本用法,这章将进一步美化词云图,让它看起来更高级。

1.是否重复

当我们想要制作一张词云图时,如果文本内容太少,就会发现这个词云图很单调。例如这一段文本:“生日快乐,小明”,按照常规方法制作出的词云图就会只将“生日快乐”和“小明”显示一次。

这时可以用到WordCloud中的repeat参数,作用是设置词语是否可以重复。

repeat = False 不会重复

repeat = True 可以重复(每个词语重复的次数相同)

将它写在wordcloud.WordCloud()的小括号中。

代码:

wc = wordcloud.Wordcloud(

口repeat = True)

2.显示数量

完成上面的步骤后,有人会觉得这个词云图太密集了,不好看。可以设置它的最大数量。

需要用到WordCloud中的max_words参数,作用是限制词语显示的最大数量(默认值为200),将它写在wordcloud.WordCloud()的小括号中。

代码:

wc = wordcloud.Wordcloud(

口repeat = True,

口max_words = 100)

#注:不要忘了逗号

3.自定义形状

词云默认形状是一个矩形,有人觉得不好看,想自定义词云形状,需要用到numpy库(自行安装)。

自定义形状需要一张图片,让词云在图片彩色区域显示。

第一步,打开图片。用到open()函数,用一个变量储存这个图片,格式为:变量1 = Image.open(‘图片名称.jpg’) #注意,图片名称后要有后缀

第二步,获得图片的颜色数据,需要用到numpy库中的array()函数,小括号中填写指定图片变量,格式为:变量2 = numpy.array(变量1)

第三步,赋值给参数mask,mask的作用是根据图片大小创建词云对象,并识别出图片中的彩色区域,让词云只在这些彩色区域显示文字。格式为:mask = 变量2(写在wordcloud.WordCloud()的小括号中)

需要注意的是,词云图片的宽和高就会和给定图片相同,就不需要设置width和height参数了。

代码:

import numpy

...

image1 = Image.open(‘图片.jpg’)

image2 = numpy.array(image1)

wc = wordcloud.WordCloud(

口...

口mask = image2)

4.轮廓线

词云也可以加轮廓线,并自定义它的粗细和颜色。

WordCloud中的contour_width参数,作用是设置轮廓线宽度(默认为0),需要设置大于0的数字。

WordCloud中的contour_color参数,作用是设置轮廓线颜色(默认为黑色)。

代码:

wc = wordcloud.WordCloud(

口...

口contour_width = 5,

口contour_color = ‘pink')

5.有人觉得颜色不够贴合图片,想要更贴近图片的颜色?可以用到wordcloud库中的颜色生成器:ImageColorGenerator()来生成字体需要的颜色,括号中填写存储图片信息的变量,再把结果赋值给color_func参数。

代码:

image1 = Image.open(‘图片.jpg')

image2 = numpy.array(image1)

img_color = wordcloud.ImageColorGenerator(image2)

wc = wordcloud.WordCloud(

口...

口color_func = img_color)

##总代码##

from PIL import Image

import wordcloud

import numpy

text = ‘生日快乐,小明’

image = Image.open(‘图片.png’)

img = numpy.array(image)

img_color = wordcloud.ImageColorGenerator(img)

wc = wordcloud.WordCloud(

口font_path = ‘FZY4JW.TTF’,

口color_func = img_color,

口max_words = 100,

口repeat = True,

口contour_width = 5,

口contour_color = ‘pink’

)

wc.generate(text)

wc.to_file(‘文件.png’)

p = Image.open(‘文件.png’)

p.show()

【注】

repeat v. 重复

array v. 阵列

mask v. 隐藏

contour n. 轮廓

总感觉有点问题,但又没找出来。。。看看就好

.

词云还有很多用法,这里只讲了其中一部分简单的,可以上网搜索

第7章 词云(2)

『加入书签,方便阅读』
123456