5种实用免费的词云图生成工具,
5种实用免费的词云图生成工具,不会python也能轻松搞定
今天520,一早上刷朋友圈就是满满的狗粮,各种各样的花式表白,什么程序员写代码表白,短视频表白,微信暗黑模式切换表白…….其实,我们数据分析届也有我们的专属表白神器:词云图,比如像下面这样把微信聊天记录导出生成词云图:
在数据可视化图表中,词云图是一种视觉冲击力很强的图表。对输入的一段文字进行词频提取,然后以根据词汇出现频率的大小集中显示高频词,简洁直观高效。
词云图应该怎么做呢,有没有什么好用的工具?百度一搜会出现各式各样的词云图网站和软件,国内国外的都有,我体验了大概20多款,有些在使用上很鸡肋,有的要付费,从其中挑选了5种词云图的制作工具分享给大家,人人都能学会
在线词云生成工具
网上很多在线词云生成网站,毕竟在线网站不用下载软件,用起来快捷方便,对比几款之后,我感觉这两个平台还算相对好用:
1、WordArt
网址:https://wordart.com/
优点:不需要注册就能使用,而且对热词数量没有限制,支持设置字体、形状等个性化配置,在线词云支持交互查看。
缺点:操作界面是英文的,这一点比较鸡肋,而且是国外网站,网页加载速度特别慢。只有一种字体支持中文,而且因为权限的问题没办法添加本地字体。
制作效果如下,各别中文有乱码:
2、微词云
网址:https://www.weiciyun.com/
优点:支持自动文本分析,提供了大量的形状模板,也支持自定义模板。字体支持种类很多,图片颜色种类也很多,还有渐变色,操作也比较简单
缺点:要注册,免费的图片有水印,而且对词汇数量有限制
数据分析软件工具
网页在线生成工具和桌面软件做词云图本质上都差不多,这里推荐大家用BI工具来做,专业的数据可视化分析软件,除了词云图之外还能做出其他经验的数据可视化效果,操作很简单,适合数据分析师上手。
1、FineBI
下载地址:https://www.finebi.com/
一款商业智能分析工具,国产软件,个人版是永久免费的,生成可视化图表很简单,制作词云图也不例外,把数据源加载进FineBI界面后,图表选择词云图,把热词和词频拖拽到对应设置框,图表就自动生成了。
2、tableau
下载地址:https://www.tableau.com/
tableau是国内外知名度比较高的商业智能工具,可视化功能很强大,用来制作一般的可视化分析很方便,不过需要收费,具体的制作步骤和上面的FineBI类似,数据源都需要提前完成词频统计。
这两个工具的定位是商业智能软件,侧重数据分析,词云图不是强项,用来做平时的可视化分析还是不错的
优点:操作极其简单,词云图界能够二次筛选,有一定的交互属性
缺点:要先准备好词频统计,没办法自定义词云图形状,个性化设置不如上面的在线网页工具。
编程工具
除了上面现成的软件和网站之外,还有一种方法就是代码生成词云图,比如python,下面推荐几个常用的制作词云图用的第三方库
1、WordCloud
WordCloud是Python专门用来制作词云图的第三方库,使用前需安装,不过这个安装过程比较麻烦,我试了一下,容易出现问题。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停用词列表
效果如下:
利用文本直接生成词云
利用jieba分词后生成词云
设置词云模板mask后效果
2、pyecharts
除了WordCloud外,pyecharts也支持生成词云,和上面BI工具生成词云的方式类似,也要求输入的数据是经过筛选和统计好的数据,比如经过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,
):"""
pyecharts可以设置一些词云图的参数,不过相比WordCloud库来说,实在是太有限了。
利用pyecharts生成的词云效果如下:
pyecharts生成的词云图片看上去有些过于”规矩”,字体旋转角度单一(通过rotate_step参数设置),字号大小对比也不够明显。