资讯专栏INFORMATION COLUMN

wordcloud绘制词云彩

kk_miles / 2878人阅读

摘要:一介绍库可以说是非常优秀的词云展示第三方库。引入完成后,我们可以设置词云的形状,参数为的一些方法方法名参数返回值备注根据单词及其频率生成词云根据文本生成词云,是方法的别称。调用和将一长段文本切片成单词,并去除。

一:wordcloud介绍

wordcloud库可以说是python非常优秀的词云展示第三方库。词云以词语为基本单位更加直观和艺术的展示文本,wordcloud库是基于numpy和pillow这两个内置库的。官网地址:wordcloud,github地址:word_cloud

二:wordcloud安装

可以直接使用pip安装:

pip install wordcloud

我应该算是幸运的吧,我看网上一堆人都是说第一次装绝对会出错,我这次装虽然没有报错,但也有一堆warning,感觉报错的主流解法都是直接下载whl文件安装,如果安装出错的话这里推荐一个安装教程:wordcloud安装方法(Windows10)

三:wordcloud的使用

我们可以通过wordcloud方法来生成我们的词云对象。我们在定义对象的时候也能生成我们的对象的参数定义:

  • width:图像的宽度,默认为400px
  • height:图像的高度,默认为200px
  • min_font_size:最小字号,默认为4px
  • max_font_size:最大字号,默认不做限制
  • margin:画布边缘留白的空隙,默认留白空间是2px
  • font_step:字体步进,系统会根据词出现的次数来定词的大小,次数多的和次数少的之间的字号差距就是步进间隔。默认为1
  • font_path:展示字体的路径
  • prefer_horizontal: 词语水平方向排版出现的频率,默认 0.9 ,所以词语垂直方向排版出现频率为 0.1
  • scale:在字段width和height乘以的倍数,最终呈现的画布尺寸以这个结果。默认是1,此方法适合需要呈现大尺寸的画布
  • max_words:词云最大单词数量,默认为200
  • stop_words:不显示词语列表,采用集合形式:stop_words={" “,” “,” "}
  • background_color:背景颜色,默认为黑色
  • normalize_plurals:bool类型,是否去掉单词末尾的s,默认去掉
  • repeat:bool类型,单词是否重复展示,默认不重复

除了上面这些参数,wordcloud还有一个特殊的参数,就是词云的形状,wordcloud的形状我们必须引入另外一个库imageio,通过imageio我们可以将目前的图片加载成元单元。

pip install imageio

引入完成后,我们可以设置词云的形状,参数为 mask

wordcloud的一些方法:

 方法名   参数 返回值 备注
fit_words(frequencies)frequencies:dict from string to floatself 根据单词及其频率生成词云

generate_from_frequencies

(frequenciesmax_font_size=None)

frequencies:dict from string to float

max_font_size:int

self
generate(text)text:stringself根据文本生成词云,是方法generate_from_text的别称。输入的文本应该是一个自然文本。若输入的是已排列好的单词,那么单词会出现两次,可以设置参数collocations=False去除此单词重复。调用process_text和genereate_from_frequences
generate_from_text(text)text:stringself
process_text(text)text:stringwords:dict (string, int)将一长段文本切片成单词,并去除stopwords。返回单词(words)和其出现次数的字典格式
recolor(random_state=Nonecolor_func=Nonecolormap=None)

random_state:RandomState, int, or None, default=None

color_func:function or None, default=None

colormap:string or matplotlib colormap, default=None

self 
to_array() image:nd-array size (width, height, 3)转换成numpy array
to_file(filename)filename:stringself保存图片文件

需要注意的是,使用generate加载词云文本时,其中txt的内容需要以空格来分隔单词,并且对于英文单词而言,如果单词长度为1-2,系统会自动过滤。

效果如下:

import wordcloud, imageio# 准备字符串str = """If El Niños were dangerous before,they are looking to become especially destructive in the near future. Already severe and unpredictable,recent research indicates these natural weather events are now swinging to even greater extremes. Since humans started burning fossil fuels on an industrial scale,coral records from the past 7,000 years indicate that heat waves,wildfires,droughts,flooding and violent storms associated with El Niño have grown markedly worse. """# 准备词云模板mask = imageio.imread("wordcloud/template.png")# 实例化一个wordcloud对象wc = wordcloud.WordCloud(width=400, height=400, min_font_size=5, max_font_size=50, font_step=2, max_words=500, mask=mask)# 加载词云文本wc.generate(str)# 输出图片wc.to_file("wordcloud/word.png")

四:wordcloud案例

题目:wordcloud 是优秀的词云展示第三方库,它以以词语为基本单位,更加直观和艺术地展示文本,请根据附件文件(校长 2018.txt、校长 2018 毕业讲话.txt),分别绘制词云彩,可自行设定背
景或背景图片。

import wordcloud, imageio# 准备字符串f1 = open("校长2018.txt", "r+", encoding="utf-8")f2 = open("校长2018毕业讲话.txt", "r+", encoding="utf-8")text1 = f1.read()text2 = f2.read()# 准备词云模板mask = imageio.imread("wordcloud/template.png")# 实例化一个wordcloud对象wc = wordcloud.WordCloud(width=400, height=400, min_font_size=5, max_font_size=50, font_step=2, max_words=500, mask=mask)# 加载词云文本wc.generate(text1 + text2)# 输出图片wc.to_file("wordcloud/word.png")print(text1+text2)f1.close()f2.close()

我在运行的时候发现,没有报错,但结果却是这样的:

经过查阅资料后找到原因,wordcloud默认字体是DroidSansMono.ttf,这个字体不支持中文格式,因此需要更换字体,找到wordcloud.py文件,打开后更改:


我这里是改成了微软雅黑,同时还需要把对应的字体放在wordcloud.py同目录:

然后就顺利完成了:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/122311.html

相关文章

  • Python生成歌

    摘要:上面是生成词云的方法封装,还有一些其他方法根据词频生成词云根据文本生成词云根据词频生成词云根据文本生成词云将长文本分词并去除屏蔽词此处指英语,中文分词还是需要自己用别的库先行实现,使用上面的对现有输出重新着色。 对于数据展示这一块有时候会用到词云,python中提供的wordcloud模块可以很灵活的完成生成词云除了使用python提供的wordcloud模块以为还有在线的生成方式ht...

    junbaor 评论0 收藏0
  • Python十分钟制作属于你自己的个性logo

    摘要:最近正好想做一个人的,于是乎决定使用词云来制作完成。如果非空,设置的宽高值将被忽略,形状被取代。除白色的部分将不会绘制,其余部分会用于绘制词云。显示的最大的字体大小当参数为并且不为空时,背景为透明。效果展示使用的照片是博主自己的照片。 作者:xiaoyu微信公众号:Python数据科学知乎:python数据分析师 词云的使用相信大家已经不陌生了,使用很简单,直接调用wordcloud...

    Markxu 评论0 收藏0
  • Python如何生成云(详解)

    摘要:前言今天教大家用模块来生成词云,我读取了一篇小说并生成了词云,先看一下效果图效果图一效果图二根据效果图分析的还是比较准确的,小说中的主人公就是程理,所以出现次数最多。 前言 今天教大家用wrodcloud模块来生成词云,我读取了一篇小说并生成了词云,先看一下效果图: 效果图一: showImg(https://segmentfault.com/img/remote/1460000015...

    Juven 评论0 收藏0
  • Python pyecharts如何绘制云图呢?下面就给大家详解解答

      Python pyecharts作为常用的数据可视化软件,能够清晰的将海量的数据,去做一个拆分,要是更直观的去查看数据图表的话,就需要去制作云图了?那么,怎么制作云图呢?下面就给大家详细的做个解答。  词云图  什么是词云图,相信大家肯定不会感到陌生,一本书统计里面出现的词频,然后可视化展示,让读者快速的了解这个主题纲要,这就是词云的直接效果。  词云图系列模板  固定模式词云图  修改一些参...

    89542767 评论0 收藏0
  • 「数据游戏」:数据告诉你多读书到底能不能多赚钱?

    摘要:今天,我就用数据告诉你,书中到底有没有黄金屋。数据来源利用的拉勾爬虫爬取了拉勾杭州站,要求年工作经验的条招聘数据。原始数据的薪资是一个区间,将区间拆分为最低与最高两个变量。大专本科硕士工资单位月最低工资分布最高薪资 北起漠河南至曾母暗沙,东达抚远西至斯姆哈纳。在广袤的中国土地上,千百年一直流传着古老的传说:书中自有黄金屋。 今天,我就用数据告诉你,书中到底有没有黄金屋。 数据来源 利用...

    alphahans 评论0 收藏0

发表评论

0条评论

kk_miles

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<