用python中的worldcloud库做一个词云

词云是一种很好看的数据可视化的手段,python的wordcloud库可以很容易的制作一个好看的词云,快来试试吧!

依赖环境:
matplotlib、wordcloud库
安装方式
可以直接打开命令行,输入

pip install wordcloud

因为国外网站访问速度很慢,经常发生连接中断的情况,可以使用国内的镜像源(以清华镜像为例)

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple wordcloud

正式开始我们最简单的词云学习

import matplotlib.pyplot as plt  #用于绘图
import wordcloud        #绘制词云

txt="life is so short,you need python to do everything even if maybe you will face many lies,many sorror,but you must remember to share your happiness and sorror."      
 #一段文本内容,字符串形式
w=wordcloud.WordCloud(background_color="white")
w.generate(txt)     #生成词云
w.to_file("pywcloud.png")    #导出为图片

这样在程序所在的文件夹里面就可以看到我们的词云图片了
在这里插入图片描述
如果要在本地看到绘制的词云,需要加上三条语句

plt.imshow(w)     #对图像进行处理
plt.axis("off")   #去除坐标系
plt.show()        #可视化

默认的背景颜色是黑色,这里我们改成了白色,可以对比一下。
在这里插入图片描述
矩形词云是最简单的类型,但是我们还可以使用本地图片来作为词云的背景,使它看起来更好看。这里最重要的就是mask参数。

最开始我了解到可以用scipy库中的imread函数来处理图片
于是写出了这样的代码

from scipy.misc import imread
import matplotlib.pyplot as plt
import wordcloud

file=open("F:/taylor.txt","r",encoding='utf-8')
txt=file.read()    #获取字符串的作用
file.close()    
mask=imread("C:/Users/lenovo/Pictures/_20200511191731.jpg")
w=wordcloud.WordCloud(mask=mask,background_color="white")
w.generate(txt)
w.to_file("pywcloud.png")
plt.imshow(w)
plt.axis("off")
plt.show()

之后出现了错误

ImportError: cannot import name 'imread' from 'scipy.misc' (E:\anaconda\lib\site-packages\scipy\misc\__init__.py)

导入错误,也就是说scipy中没有这个函数?以前没有发生过这种情况,所以查找了好久才发现原因。

主要是scipy自1.3.0后移除了imread、imsave、imresize等方法
解决方法有:
可以把scipy库换成1.2.1以下的版本,
或者使用imageio库中的imwrite、imread等函数,可以替代scipy库中的相应函数。建议采用第二种方式

只需要把

from scipy.misc import imread

替换成

from Imageio import imread

效果图:

在这里插入图片描述
看起来蛮不错的嘛,霉霉好好康~~

也可以用下面的代码代替,效果相同

from PIL import Image   #pillow库的Image函数用来处理图片 
import numpy as np
import matplotlib.pyplot as plt
import wordcloud

file=open("F:/taylor.txt","r",encoding='utf-8')
txt=file.read()    #获取字符串的作用
file.close()    
image_path="C:/Users/lenovo/Pictures/_20200511191731.jpg"        #这里需要你的本地图片的路径
img=Image.open(image_path)
img=np.array(img)
w=wordcloud.WordCloud(max_font_size=100,min_font_size=2,
                    max_words=200,background_color='white',
                    mask=img)
 #对mask参数的处理,有很多有意思的参数
w.generate(txt)
w.to_file("pywcloud1.png")
plt.imshow(w)
plt.axis("off")
plt.show()

注意

  • 平时我们处理的文本往往是大量的,所以需要用文件形式打开,如果与程序在同一目录下,那么可以用相对路径打开文件,否则要使用文件的绝对路径
  • 背景颜色需要注意,这里我采用背景颜色为白色,那么你的图片的背景也应该是白色,否则词云会很失败。

以上介绍的都是对于制作英文词云的方法,因为英文是以单词为单位的,不需要分词,如果我们需要做一个中文词云,还需要添加一个中文分词库——jieba。

import jieba
import wordcloud
from imageio import imread

file=open("F:/note.txt","r",encoding='ANSI')   
#编码方式不同的文件不太一样,大部分是utf-8
txt=file.read()
file.close()
txt_list = jieba.lcut(txt)         #精确分词模式
#精确分词之后形成的是一个以每个词语为元素的列表
string = ' '.join((txt_list))    #用join函数连接成字符串
#这里需要一张本地图片,设置成mask参数
mk = imread('C:/Users/lenovo/Pictures/20200505101029364.png')
w = wordcloud.WordCloud(max_font_size=100,
                        background_color='white',
                        scale=3,font_path='C:/Windows/SIMLI.TTF',
                        mask=mk)
w.generate(string)    #生成词云
w.to_file('axwordcloud.png')

在这里插入图片描述
在这里插入图片描述
自己在做的时候,图片的路径和文本文件的路径要改成自己的。

制作中文和英文词云的方法都比较简单,当然做中文词云需要多一步分词的步骤。这里简单介绍一下jieba的分词方式。
在这里插入图片描述
(图片来源于北理工嵩天python课程)
在这里插入图片描述
在wordcloud库里面也有很多有用的参数,最重要的莫过于mask参数,其他的例如stopwords,max_words,max_font_size,min_font_size,以及font_path,scale,collocations都有他们的作用。

这篇文章介绍十分详细https://blog.csdn.net/qq_39611230/article/details/105954600

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Cachel wood

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值