可以看到,花火相较于上面两个在线平台,依旧是传个txt进去就出来词云,但是做出来的图更好看,并且支持更多自定义的参数,不过需要付费才能去除水印。
主观评分75分|颜值即正义,但是门票¥30/月
以上就是几个在线制作词云网站的测评,并无任何广告与抹黑,其实与其他没有列出的网站都大同小异,免费的功能简单复杂的图会好看点但是会收费,各有千秋吧。
接下来有请Python出场。
Python 制作:Pyecharts
Python 中制作词云使用 Pyecharts 还是比较方便的,做出来的图也比较清爽。
https://pyecharts.org/#/zh-cn/basic_charts?id=wordcloud:词云图

因为是写代码制作那么有关文字样式、旋转角度、高度、距离、阴影等都可以自定义,并且可以使用 pyecharts 的全局和系列配置项进行调整。

唯一的问题是 pyecharts 接收的数据必须是类似经过分词计算之后的数据,也就是你要给它这样的数据。
data = [
("生活资源", "999"),
("供热管理", "888"),
("供气质量", "777"),
("生活用水管理", "688"),
("一次供水问题", "588"),
("交通运输", "516"),
("城市交通", "515"),
("环境保护", "483"),
("房地产管理", "462"),
("城乡建设", "449"),
("社会保障与福利", "429"),
......
]
当然这里的数字并不一定需要是频率,也可以是权重等数据。
所以如果需要绘制词云的数据恰好是这种计算好的数据,尝试使用 Pyecharts 吧。
主观评分75分|好看但也有一定限制。
Python 制作:wordcloud
现在登场的就是 Python 中制作词云最常用的 wordcloud,说到 wordcloud 就不得不介绍jieba 分词了,简单来说流程就是传一个 txt 进去, jieba 分词得到结果后再传给 wordcloud 制作词云,同时支持比 Pyecharts 更多的自定义设置。
from wordcloud import WordCloud
import matplotlib.pyplot as plt #绘制图像的模块
import jieba #jieba分词
path_txt='music.txt'
f = open(path_txt,'r',encoding='UTF-8').read
# 结巴分词,生成字符串,wordcloud无法直接生成正确的中文词云
cut_text = " ".join(jieba.cut(f))
wordcloud = WordCloud(
#设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的
font_path="msyh.ttc",
#设置了背景,宽高
background_color="white",width=1000,height=1000).generate(cut_text)
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show

从代码和词云效果来看,wordcloud 由于支持修改的参数更多,所以也就需要更多的测试不同效果下的图片来找到适合这组数据最优的词云,比如我的这图看着就没有 pyecharts 生成的舒服,当然只要自己调整好了,就可以保存为一个脚本以后直接使用即可。
主观评分80分|毕竟是使用最多的词云库。
Python 制作:stylecloud
最后介绍一个由 wordcloud 优化而来的库 stylecloud,也需要搭配jieba 分词使用,但是代码更加简介,生成的词云也更加美观,比如还是刚刚的文本,使用下面的代码即可
def jieba_cloud(file_name):
with open(file_name,'r',encoding='utf8') as f:
word_list = jieba.cut(f.read)
result = " ".join(word_list) #分词用 隔开
#制作中文云词
gen_stylecloud(text=result,font_path='msyh.ttc',output_name=file_name.split('.')[0] '.png') #必须加中文字体,否则格式错误
if __name__ == "__main__":
file_name = 'music.txt'
jieba_cloud(file_name)
