词云图是一种用来展示高频关键词的可视化表达,它利用文字、色彩、图形的搭配,来呈现一种丰富的视觉体验。
上篇文章我们介绍了中文分词库jieba,今天我们就在jieba分词的基础上,介绍wordcloud、stylecloud和pyecharts三种制作词云图的方法。
jieba分词
这次词云图的材料,我们用的是国务院印发的《2030年前碳达峰行动方案》,我们来看一看这篇文章提到了哪些关键词。为了省事,我们直接用 jieba自带的TF-IDF 算法提取关键词。
import jieba
import jieba.posseg as pseg
import jieba.analyse
#读取要分析的文本
text_path = "2030年前碳达峰行动方案.txt"
text=open(text_path,encoding="utf8").read()
word_list = []
# topK为返回几个权重最大的关键词,withWeight表示是否一并返回权重,allowPOS指返回指定词性的词,这里我们返回名词和其他专名。
for x, w in jieba.analyse.extract_tags(text, withWeight=True,topK = 30,allowPOS=("n","nz")):
word_list.append(x)
返回的关键词如下所示。
['绿色', '碳达峰', '降碳', '能源', '利用', '体系', '生态', '重点', '技术', '储能', '资源', '建筑', '能效', '水平', '领域', '基础设施', '有序', '标准', '能耗', '地区', '转型', '项目', '核算', '风电', '资源化', '替代', '垃圾', '企业', '国家', '行业']
worldcloud制作词云图
wordcloud是制作词云图最常用的工具,上手简单,操作方便,直接利用pip install wordcloud进行安装。下面我们利用worldcloud来制作词云图。
import numpy as np
from PIL import Image
from wordcloud import WordCloud,ImageColorGenerator
#这里我们导入背景图
bg = np.array(Image.open(r"E:\01_Qython\article/china.jpg"))
# 空格连接词语
space_list = ' '.join(word_list)
wc = WordCloud(
width=1400, height=2200, #设置词云画布大小
font_path='C:/Windows/Fonts/simfang.ttf', # 设置字体,这里我们导入本机的字体
mask=bg, # 设置背景图片,即我们刚刚导入的图片
background_color='white', # 设置背景颜色
max_font_size=150, # 设置字体最大值
max_words=30, # 设置最大显示字数
).generate(space_list)
wc.to_file('wordcloud.jpg')
制作完成的词云图如下所示。
stylecloud制作词云图
stylecloud是wordcloud优化改良版,操作简单,可以使用 Font Awesome 提供的免费图标更改词云的形状;通过palettable更改调色板以自定义风格,更改背景颜色。安装方式同样是利用pip install wordcloud。下面我们用stylecloud分别画两张不同形状与颜色的词云图。
import stylecloud
stylecloud.gen_stylecloud(
text=space_list, # 上面分词的结果作为文本传给text参数
size=512,
font_path='msyh.ttc', # 字体设置
palette='cartocolors.qualitative.Pastel_3', # 调色方案选取,从palettable里选择,网址http://jiffyclub.github.io/palettable/
gradient='horizontal', # 渐变色方向选了垂直方向
icon_name='fas fa-binoculars', # stylecloud的特殊参数,选取蒙版,可在https://fontawesome.dashgame.com/上选取提供的图标
output_name='stylecloud1.png')
stylecloud.gen_stylecloud(
text=space_list,
size=512,
font_path='msyh.ttc',
palette='cartocolors.diverging.Tropic_5',
gradient='horizontal',
icon_name='fas fa-globe',
output_name='stylecloud2.png')
两种形状与配色的词云图如下所示。
pyecharts
Pyecharts是一款将python与echarts结合的强大的数据可视化工具,它也提供了词云图的绘制方法。
from pyecharts import options as opts
from pyecharts.charts import WordCloud
c = WordCloud()
c.add(series_name="2030年前碳达峰行动方案关键词", # 图名
data_pair=word_list, #数据,注意格式为[(word1, count1), (word2, count2)…]
shape = "triangle", #词云图轮廓
)
c.render('echarts_wordcloud.html') #以HTML格式输出,可交互,render_notebook()可以在jupyter notebook中直接显示
pyecharts输出的是html格式的可交互结果。
总结
今天我们学习了三种词云图的制作方式,整体来看,三种方法都比较简单,不知道你更喜欢哪一种方法。对词云图的制作感兴趣的同学,赶紧来试一试啦。
海量python学习资料点击领取
**微信关注:**小Q的python笔记,获取海量python学习资料。