有一个表格,sheet名字是:重庆长尾词。这个表单中有两列,一列是词汇名,另外一列是词汇出现的频次(是数字)。使用Python中的wordcloud
库来制作词云图。
1. 导入库和读取数据
import pandas as pd
from wordcloud import WordCloud
import matplotlib.pyplot as plt
df = pd.read_excel('C:/VV/学习/读研/毕业论文/毕业论文稿件1/中间稿/目的地形象&情感分析/情感分析.xlsx', sheet_name='重庆长尾词')
#将数据转化为字典类型,其中词汇名作为字典的键,词频作为字典的值。
word_freq = dict(zip(df['词汇'], df['词频']))
2. 生成词云
创建词云对象并生成词云。使用wordcloud
库创建WordCloud
对象,并使用generate_from_frequencies
方法生成词云
wc = WordCloud(width=800, height=400, background_color='white')
wc.generate_from_frequencies(word_freq)
3. 展示词云
使用matplotlib
库展示生成的词云图。
#bilinear使用双线性插值算法来平滑图片
plt.imshow(wc, interpolation='bilinear')
#隐藏图形坐标轴的函数
plt.axis('off')
plt.show()
最终效果(默认图案,没有用新的形状)
4. 让词云变成想要的形状
在网上下载一个背景是白色的喜欢的形状图片,jpg格式,png格式不行(试了好久,还抠了图,最终看一位老哥的评论说不行才指导)。
修改第2步:
import numpy as np
img_path = 'C:/VV/学习/读研/毕业论文/毕业论文稿件1/中间稿/目的地形象&情感分析/老虎.jpg'
# 加载图片并使用 mask 参数指定为该图片
ms = np.array(Image.open(img_path))
wc = WordCloud(background_color='white', mask=ms)
wc.generate_from_frequencies(word_freq)
效果: