十种形成词云的方法?
生成词云的在线工具
搜索词云在线生成工具将获得包括国内外网站平台在内的许多结果。与搜索前几种在线工具相比,但在使用中或多或少存在一些缺陷。有的网页加载缓慢,有的注册后才能使用,有的字体支持差,有的付费使用。
当然,使用方便、灵敏、有效,最好是免费的。经过比较,我觉得这两个平台相对容易使用:
WordArt
优点:无需注册即可使用;热词数量无限;支持个性化配置,包括热词、字体、外观等;在线词云支持交互查看
缺点:英文操作界面,部分用户使用不方便,加载速度慢;字体支持差,中文支持字体只有一种,本地字体可能因为权限问题无法添加。
默认字体库只有一种字体支持中文
微词云
优点:支持自动文本分析;有大量的外观模板和自定义模板;图片颜色多样,包括渐变色;支持大量字体;操作简单
缺点:注册后使用;免费下载图片有水印;热词数量有限
支持大量个性化配置
两个在线平台产生的词云结果:
WordArt在线生成(个别中文仍有乱码)
在线生成微词云(实际上中间有水印)
02 生成词云的软件工具
在生成词云的任务中,网页在线工具和桌面软件没有实质性的区别,甚至很多平台都支持在线生成和桌面客户端软件。
为了区分网页在线生成词云的方式,选择商业智能分析工具Tableau作为桌面软件的代表来制作词云。虽然词云可能不是Tableau的主营业务。
使用Tableau生成可视化图表1相对简单,单词云也不例外。将数据源加载到Tableau界面后,可以简单地单击设置。
“热词”是所有的词源,“频率”是频率
事实上,使用Tableau制作单词云的输入数据不是文本,而是处理后的两列结果数据。从这个角度来看,Tableau生成单词云的方式甚至有点低级。严格地说,它只能称为筛选和统计文本的可视化显示。
然而,很容易想到它非常方便的使用场景。例如,如果提供了几个商品名称及其销售数据,可以通过单词云中商品名称的大小直接显示各自的收入比例。
Tableau制作词云的优缺点:
优点:操作极其简单;词云界面可交互,便于2次筛选
缺点:输入源需要完成词频统计;个性化设置程度低;热词对比度差
利用Tableau生成词云结果,提供统计后的热词数据:
Tableau生成的词云并不突出
03 产生词云编程工具
很多编程工具都可以生成词云,Python也不例外。
wordcloud
wordcloud是Python专门用于制造词云的第三方库,使用前需要安装,这个安装过程往往会隐藏一些坎坷。使用wordcloud生成词云非常简单,可以通过大量的参数设置定制词云效果。
wordcloud虽然有自己的切分词处理能力,但由于其切分效果一般,经常使用jieba库进行切分,然后用空格连接(wordcloud在处理切分时优先使用空格作为分隔符)。
示例源码:
import jieba
import wordcloud
import matplotlib.pyplot as plt
word_list = jieba.lcut(words) # 口吃词库切分词
word_list = [word for word in word_list if len(word.strip())>1]#清洗一个单词
word_clean=" ".join(word_list)
import imageio
mask=imageio.imread(r'kobe.jpg')
wc = wordcloud.WordCloud(font_path = "simkai.ttf,#指定字体类型
background_color = "white,#指定背景颜色
max_words = 200, # 词云显示的最大词数
max_font_size = 255,#指定最大字号
mask = mask) #指定模板
wc = wc.generate(word_clean)##生成词云
plt.imshow(wc)
plt.axis("off")
plt.show()
Wordcloud详细参数设置
def __init__(self, font_path=None, width=400, height=200, margin=2,
ranks_only=None, prefer_horizontal=.9, mask=None, scale=1,
color_func=None, max_words=200, min_font_size=4,
stopwords=None, random_state=None, background_color='black',
max_font_size=None, font_step=1, mode="RGB",
relative_scaling='auto', regexp=None, collocations=True,
colormap=None, normalize_plurals=True, contour_width=0,
contour_color='black', repeat=False,
include_numbers=False, min_word_length=0):
"""
查阅wordcloud的官方文件,可以发现其自身的参数设置非常有用,如以下有用功能:
font_path:设置字体
mask:设置词云模板
stopwords:停用词列表
给出wordcloud三种不同的方法来生成词云结果:
直接利用文本生成词云
用jieba分词生成云
设置词云模板mask后效果
PyEcharts
Python的另一个可视化库Pyecharts除了wordcloud专门用于生成词云的第三方库外,还支持生成词云,即pyecharts库下的wordcloud子类。
然而,类似于Tableau生成词云的方式,pyecharts还要求输入的数据是经过筛选和统计的数据,如jieba分词+counter统计的结果,可以非常方便地使用pyecharts制作词云。此外,pyecharts的所有图表都可以交互,词云图也不例外,这是它的一个优势。
示例源码:
import jieba
from collections import Counter
from pyecharts.charts import WordCloud
word_list = jieba.lcut(words) # 切分词
word_list = [word.strip() for word in word_list if len(word.strip())>1]
wordCount = Counter(word_list)
wc = WordCloud()
wc.add("", wordCount.items(), word_size_range=[20, 100])
wc.render(r'kobe.html')
"""
def add(
self,
series_name: str,
data_pair: types.Sequence,
*,
shape: str = "circle",
word_gap: types.Numeric = 20,
word_size_range: types.Optional[types.Sequence] = None,
rotate_step: types.Numeric = 45,
tooltip_opts: types.Tooltip = None,
itemstyle_opts: types.ItemStyle = None,
):"""
查阅其add方法,可以了解生成词云的一些设置参数,但与wordcloud库相比,pyecharts的wordcloud设置参数过于有限。
使用pyecharts提供统计数组生成的词云结果:
pyecharts生成的字云图片看起来有点太“规则”,字体旋转角度单1(通过rotate_step参数设置),字体大小对比不够明显。
04 结论
词云作为数据可视化的常用手段,视觉冲击力强,制造方法灵活多样
依靠在线工具,可以有效满足普通词云制造需求。国内外都有相关工具
Tableau作为一款商业智能分析软件,在制作词云方面表现出色,但极其灵敏方便
Python编程可以实现大量的个性化定制,包括单词分割、过滤、图片模板和文本设置,有大量的参数可以调整
pyecharts的wordcloud子库除了wordcloud用于生成词云外,也有很好的效果,支持交互