python绘制自定义形状的词云图

1 篇文章 0 订阅
0 篇文章 0 订阅

利用python进行绘制词云

绘制词云的缘由:

在进相关主题分析的时候遇到了需要用到词云的地方。
情景:通过主题模型生成的主题分布是一系列的词分布,表现形式为“词和词对应的权重”。得到了主题分布以后想要通过这些词总结一下该主题的具体标签。因为结果中含有词和词对应的权重,所以想通过词云来更加直观的观察主题。
注:在写该笔记的时候,参考了**简书《用Python实现一个词频统计(词云)图》**相关内容,并结合自己的数据情况做了修改和进一步尝试。

python包准备:

以下的python包是在本数据情况下使用的,参考的内容中有其他一些python包,用来做数据预处理使用。

import numpy as np #用来将图片转换成数组
import wordcloud #词云生成包
from PIL import Image #词云形状图片处理包
import matplotlib.pyplot as plt #python绘图包

数据形式

数据输出为列表形式,列表元素为元组,元组内容为主题序号、主题词分布。下面以topic 0为例。此处使用的不是词频,而是词的权重,意义相同。

topic = (0, '0.134*"改装" + 0.054*"黑色" + 0.027*"求购" + 0.027*"位置" + 0.020*"更好" + 0.020*"减震" + 0.017*"自动挡" + 0.016*"实车" + 0.015*"发布" + 0.014*"周末" + 0.014*"一路" + 0.014*"回家" + 0.014*"刹车片" + 0.014*"无线" + 0.014*"模块" + 0.012*"咋样" + 0.011*"加个" + 0.011*"次" + 0.010*"行李架" + 0.009*"件" + 0.009*"帅" + 0.009*"刹车盘" + 0.009*"没人" + 0.009*"卡钳" + 0.008*"排气管"')

进行预处理,转换成{词:权重,...} 的字典形式。

word_dict = {}
topic_ = topic[1].replace(' ','').replace('"','').split('+')
for i in range(len(topic_)):
	word_dict[topic_[i].split('*')[1]]=float(topic_[i].split('*')[0])
print(word_dict) #输出字典查看一下形式
{'改装': 0.134, '黑色': 0.054, '求购': 0.027, '位置': 0.027, '更好': 0.02, '减震': 0.02, '自动挡': 0.017, '实车': 0.016, '发布': 0.015, '周末': 0.014, '一路': 0.014, '回家': 0.014, '刹车片': 0.014, '无线': 0.014, '模块': 0.014, '咋样': 0.012, '加个': 0.011, '次': 0.011, '行李架': 0.01, '件': 0.009, '帅': 0.009, '刹车盘': 0.009, '没人': 0.009, '卡钳': 0.009, '排气管': 0.008}

词云形状

词云形状这里选择自定义,使用汽车形状如下图1.jpg
在这里插入图片描述

picture = np.arrany(Image.open('data/1.jpg')) #获取图片的三维数组表示
word_cloud = wordcloud.WordCloud(
	font_path='data/STXINGKA.TTF', #设置字体格式
	mask = picture, #设置词云形状
	max_words = 50, #设置最多显示词数
	max_font_size = 100 #设置字体最大值)

根据字典生成词云

word_cloud.generate_from_frequencies(word_dict)
image = word_cloud.to_image() #词云转换成图片
image.show() #显示图片
plt.axis('off')
plt.imshow()
plt.show() #plt的三行代码显示效果与image.show()相同

得到的结果如图:
在这里插入图片描述
简单的词云图就完成了。

参考:

  1. 用Python实现一个词频统计(词云)图 https://www.jianshu.com/p/28718ba04bc9?from=groupmessage
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值