【Python】使用wordcloud画词云的可视化例子,并保存图片

之前写了用pyecharts画词云,今天我们来看一下用python的wordcloud库画词云。

wordcloud接收的数据有两种格式,一种是纯文本的格式,另一种是词频的格式。我们来举个例子。

from wordcloud import WordCloud
import matplotlib.pyplot as plt

### 纯文本数据
data = ['重庆','上海','北京','天津','上海','重庆','重庆','北京','重庆','上海','重庆']
### 将数据中的每一个元素用空格连接成一个字符串
data = ' '.join(data)
### 词频字典
data1 = {'重庆':5,'北京':2,'上海':3,'天津':1}

### 生成词云,/font/msyh.ttc可以让词云中的中文不是乱码(条形框)
wc = WordCloud(font_path='/font/msyh.ttc', background_color='white').generate(data)
wc1 = WordCloud(font_path='/font/msyh.ttc',background_color='white').generate_from_frequencies(data1)
### 显示词云
fig = plt.figure(1)
plt.imshow(wc)
plt.axis('off')

fig = plt.figure(2)
plt.imshow(wc1)
plt.axis('off')
plt.show()

运行结果,我们可以看到生成了两张词云: 

                                   

                                                      

需要注意的是,如果输入的数据是文本,需要将数据用空格连成一个字符串,否则就会报TypeError: expected string or bytes-like object的错误。

通过修改mask参数,wordcloud库可以支持词云填充图片,也就是整个词云的轮廓为图片的形状。我们来看个例子:


from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

data1 = {'重庆':20,'北京':30,'上海':19,'天津':11,'南京':5, '宁波':13,
         '西安':3,'深圳':9,'武汉':7,'陕西':10,'山西':15,'山东':18,
         '湖南':14,'云南':12,'昆明':8,'丽江':6,'浙江':21,'杭州':25}
### 打开作为轮廓的图片,并转为数组
mask = np.array(Image.open('C:\\Users\\Administrator\\Desktop\\timg (2).jpg'))
wc1 = WordCloud(font_path='/font/msyh.ttc', background_color='white',mask=mask).generate_from_frequencies(data1)
fig = plt.figure(1)
plt.imshow(wc1)
plt.axis('off')

plt.show()

运行结果,因为数据没有很多,填充的不是很好。大概的形状还是有的:

                                   

画完图保存图片,一句话搞定

### dpi为图片的像素
plt.savefig('E:\\picture.jpg',dpi=500)

 

  • 13
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值