8月随笔[Python-WordCloud的使用]

使用WordCloud库绘制好看的词云图片

WordCloud的安装

  • 命令行的安装
    安装第三方库只需要在命令行中使用 pip install 命令即可:pip install wordcloud
    同理,pycharm的命令行中也可以,在不做更改的前提下,pycharm中还自带一个python的解释器,这个pip install是为这个自带的安装,除非你经过下述配置
  • pycharm中python解释器的配置
    有的人一辈子只有一个女朋友(doge),但是可能有很多IDE,而很多ide都会在安装的时候自带一个相应语言的解释器(vscode除外,需要你自己配置),这种情况下,其实解释器是多余的,往往入门时候,第一步便是配置相应解释器环境。就比如Python,但是在安装第三方库的时候却可能因为本地和IDE自带解释器位置的不同,有些在cmd中直接安装的库在IDE中并不能直接使用。
    我推荐直接在IDE的设置选项中直接将解释器设置为本地解释器,方便同一管理库。以下是以Pycharm为例的流程展示:
    8月随笔[Python-WordCloud的使用]_第1张图片
    首先在左上角File打开Setting
    8月随笔[Python-WordCloud的使用]_第2张图片
    然后找到Python解释器
    在这里插入图片描述
    点击齿轮按钮-Add
    8月随笔[Python-WordCloud的使用]_第3张图片
    设置已存在的环境,找到python.exe确认即可。
    这时候回到Python解释器页面会发现库列表中呈现的即是自己在cmd安装的。

WordCloud的基本使用流程

参考了北理Python语言程序设计一课。
1 引入wordcloud库,并且注意文件名不要是wordcloud.py否则会找不到接下来要用的WordCloud类,或者使用import xxx as yyy格式,重命名后使用库
2 `w = wordcloud.WordCloud()`
3 使用 'w.genert(file/String) '加载词库,词库来源可以是文件,也可以是字符串,以空格分隔(分隔符可以设定)
4 w.to_file("path:file") 使用to_file输出图片,路径文件名均可指定
下面是完整例程
<---文件名为xx.py --->
import wordcloud
txt = "life is short, you need python"
w = wordcloud.WordCloud(background_color="white")
w.generate(txt)
w.to_file("D://pywcloud.png")
输出结果:

8月随笔[Python-WordCloud的使用]_第4张图片

WordCloud属性设置

w=wordcloud.Wordcloud(<参数>)
  • 对字体、图片、词语的设置
参数 描述
width 设置生成图片的宽度,默认400像素
height 指定生成图片的高度,默认200像素
min_font_size 指定词云中字体的最小字号(频率最低的词使用)
max_font_size 指定词云中字体的最大字号(频率最高的词使用)
font_step 指定词云中字体字号的步进间隔,默认为1
font_path 指定字体文件的路径,默认None (用于自定义字体)
max_words 限制词云显示的最大词语数量,默认200
stop_words 指定排除词的列表(即哪些词汇不被显示)
  • 对词云形状的设置
参数 描述
mask 指定词云形状,默认为长方形,需要引用imread()函数
background_color 指定词云背景
from scipy.misc  import imread
mk = imread("pic.png")
w=wordcloud.WordCloud(mask=mk)

使用imread读取一个图片效果

对中文文本的分词

这是由于wordcloud本身是使用空格分词的,中文因为连贯书写分词有所不便,使用中文分词词库jieba,并结合join方法辅助wordcloud的使用

例程

import wordcloud
import jieba
txt = "程序设计语言是计算机能够理解" \
      "和识别用户操作意图的一种交互体系," \
      "它按照特定规则组织计算机指令,使计算机" \
      "能够自动进行各种运算处理。"
w = wordcloud.WordCloud(background_color="white",
                        font_path="C:\Windows\Fonts\STHUPO.TTF",
                        width=1000,height=700
                        )

w.generate(" ".join(jieba.lcut(txt)))
w.to_file("D://jiebacl.png")

这里在说明以下字体的路径,win10下一般在C盘的Windows/Fonts文件夹下,并且有些字体的实际名字与显示名字不同,比如我在程序中使用的华文琥珀字体实际名字为STHUPO.TTF,可以在属性中看到。
8月随笔[Python-WordCloud的使用]_第5张图片
Pycharm中运行情况如图
8月随笔[Python-WordCloud的使用]_第6张图片
输出图片为:8月随笔[Python-WordCloud的使用]_第7张图片
可以看到各种显示格式的变化,关于jieba库的使用会在我的另一篇随笔中分享。

文件作为词库

下面结合文件操作对一篇三毛的短篇绘制图云,小说名为《一个男孩子的爱情》,hahaha,好像这种文字在高中的时候常读,记得在《撒哈拉的故事》有收录
代码如下

import wordcloud
import jieba
f=open("D:/xiaoshuo.txt",'r',encoding="utf-8")
t=f.read()
f.close()
l=jieba.lcut(t)
txt=" ".join(l)
w=wordcloud.WordCloud(width=1000,height=700,background_color="white")
w.generate(txt)
w.to_file("D:/xiaoshuo.png")

值得注意的是,如果你没有指定字体的话,wordcloud默认的字体是不支持显示中文的,这里使用了微软雅黑。
输出结果如图:(荷西频率超高)
8月随笔[Python-WordCloud的使用]_第8张图片
还是值得看一看的,三毛的文字有洒脱有忧郁,适合用来消遣一个安静的午后。

图片形状的修改

前面已经介绍了mask属性可以用来指定图片形状,学习之后,我意识到这是一个图片array类型,而网上或者北理视频中使用的scipy.misc中的imread已经被弃用,它的效果是读取图片生成array,有这样一个替代方法
import wordcloud
import jieba
import imageio
mask= imageio.imread("D:/cloud3.png")
f=open("D:/xiaoshuo.txt",'r',encoding="utf-8")
t=f.read()
f.close()
l=jieba.lcut(t)
txt=" ".join(l)
w=wordcloud.WordCloud(width=1000,height=700,background_color="white",
                      font_path="msyh.ttc",mask=mask)
w.generate(txt)
w.to_file("D:/xiaoshuo.png")

即使用imageio库
下面是我使用的一张云朵形状的图
8月随笔[Python-WordCloud的使用]_第9张图片
输出的效果:
8月随笔[Python-WordCloud的使用]_第10张图片
哈哈哈,有没有被我骗到,这个图选的不是很好,不知道具体mask参数在里面怎么操作的,就这图而言必然是提取了轮廓/有颜色的部分。大家可以自行寻找素材尝试,一些素材资源网站我也会在之后的随笔中分享给大家。

							————————2020-08-06

话题

8月,我还将持续更新有关Python,PS(不知道在CSDN适不适合)等方面的随笔。您可以在随笔中了解一些使用方式以及好用的插件,或是实用的库的实用方法等。

下篇将介绍jieba库的使用。

你可能感兴趣的:(假期随笔)