python轻松实现炫酷词云图

词云图是一种用来展示高频关键词的可视化表达,它利用文字、色彩、图形的搭配,来呈现一种丰富的视觉体验。

上篇文章我们介绍了中文分词库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学习资料。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DataAssassin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值