博主之前在项目中发现Python的词云库wordcloud显示的都是方框,别担心,我有一个妙招让你的中文词云变得美观又清晰!
问题
wordcloud是一个基于python的词云生成库,它可以让你用简单的代码创建出各种形状和颜色的词云图像。
wordcloud的github地址
:https://github.com/amueller/word_cloud
wordcloud默认是不支持中文显示的
。
- 首先我们安装wordcloud
pip install wordcloud
当做好数据预处理操作画词云图时
wc = WordCloud(collocations=False, width=1400, height=1400, margin=2).generate(text.lower())
当数据中有中文数据画图会出现以下情况:
这是因为使用的字体不能支持中文
解决方案
解决方法是使用一个能够支持中文的字体。wordcloud有个专门设置字体的参数:
font_path : string #字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path = '黑体.ttf'
我们把font_path
属性加上,再用纯中文的数据集测试。下面的代码是在Windows
下安装的jupyterbook
测试。
解决代码
# 源数据太长只截取了一小段
st = 'Silent Angel期待您的光临,共赏美好的声音!Silent Angel期待您的光临,共赏美好的声音!这只HD650在1k的失真左声道是右声道的6倍左右,也超出官方规格参数范围(0.05%),看来是坏了达音科 17周年 倒是数据最好看,而且便宜bose,beats,apple的消費者根本不知道有曲線的存在不错的数据我觉得任何人都可以明确分别高端耳机之间的区别,不用出声都可以,毕竟佩戴感不一样,这还没法做到盲听听出区别是一方面,听出高低的层次要求就更高了。有没有人能从10条电源线里,听出最贵的是哪条?二级银耳朵,对号入座下一般来说所谓“发烧友”起步应该是铜耳朵这个级别,达不到的话就别在HIFI上浪费钱了,入门级产品玩玩就可以了。我觉得器材到一定级别,搭配好了,达到听出来线材区别是一件非常容易的事情。不知老大是哪个级别的自我定位一下,算个铜耳朵吧不是还要能分辩水电,火电和核电的吗。 能分辨这个的是什么耳朵看了下最多到一级银耳朵顶天了。但 mp3 和无损不一定能听出来。银耳飘过。。。'
st = jb.lcut(st)
st = '/'.join(st)
wordcloud = WordCloud(collocations=False,font_path='msyh.ttc', width=1400, height=1400, margin=2).generate(st)
# 显示图片
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
完美解决
使用其他中文字体
github
有个Adobe
开源的支持中文的字体库:
https://github.com/adobe-fonts
如果想显示其他中文字体,可以去字体库中下载,font_path
属性后填为本地保存地址绝对路径即可,具体代码例如下:
font = r'C:\Windows\Fonts\simfang.ttf'
wc = WordCloud(collocations=False, font_path=font, width=1400, height=1400, margin=2).generate(text.lower())
包含词云图的成熟项目
博主目前也整理了很多前期做过的毕设项目,如果不想自己动手简单下载配置环境修改的同学可以看下。
手把手教你:电影数据分析与可视化系统
手把手教你:基于Django的新闻文本分类可视化系统