画词云首先需要安装wordcloud(生成词云)和jieba(中文分词)。

先来说说wordcloud的安装吧,真是一波三折。首先用pip install wordcloud出现错误,说需要安装Visual C++ 14.0。折腾半天安装好Visual C++后,还是不行,按网上指点,下载第三方包安装(https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud)。安装是成功了,可是在anaconda里导入的时候又出现了问题,说是"no module named wordcloud"。随后又折腾了各种方案,比如网上有人说重新安装pillow包,等等,均不可行。突发奇想,打开Pycharm试了试,导入成功了。这说明wordcloud包其实已经安装好了,只是anaconda不识别。最后,终于找到解决方案:在anaconda prompt里输入命令:conda install -c conda-forge wordcloud,即可安装成功(https://anaconda.org/conda-forge/wordcloud)。

总的来说,wordcloud做的是三件事:

(1) 文本预处理

(2) 词频统计

(3) 将高频词以图片形式进行彩色渲染

from wordcloud importWordCloud, STOPWORDSfrom matplotlib importpyplot as plt

fig,ax=plt.subplots()

with open(r'...\vanity fair.txt') as f:

text=f.read()

mycloudword=WordCloud(width=800,

height=600,

scale=1,

margin=2,

background_color='white',

max_words=200,

min_font_size=40,

max_font_size=140,

stopwords=STOPWORDS,

random_state=50).generate(text)

ax.imshow(mycloudword)

ax.axis("off")

plt.show()

mycloudword.to_file(r"...\vanityfair.png")

输出:

注:设置不同的random_state值会让字的分布不一样。

上面演示的是用英文做的词云,那么如果我们要用中文生成词云呢?这时候就要用到jieba了。

英文语料可以直接输入到wordcloud中,但是对于中文语料,仅仅用wordcloud不能直接生成中文词云图。这是因为英文单词以空格分隔,而中文的词与词之间一般没有字符分隔。因此,应用到中文语料上的时候,注意要先分好词,再用空格分隔连接成字符串,最后输入到wordcloud。

另外需要注意的是:需要下载中文字体到相应的文件夹,设置该字体路径为font_path。否则,如果设置的是英文字体,那么中文将显示为方框。

让我们用翻译版的名利场小说来做演示:

from wordcloud importWordCloud, STOPWORDSimportjiebafrom matplotlib importpyplot as plt

fig,ax=plt.subplots()

with open(r'...\名利场.txt','rb') as f:

text=f.read()

wsplit=jieba.cut(text)

words="".join(wsplit)

mycloudword=WordCloud(font_path=r'C:\Windows\Fonts\msyh.ttf',

width=800,

height=600,

scale=1,

margin=2,

background_color='white',

max_words=200,

min_font_size=40,

max_font_size=140,

stopwords=STOPWORDS,

random_state=50).generate(words)

ax.imshow(mycloudword)

ax.axis("off")

plt.show()

mycloudword.to_file(r"...\vanityfair1.png")

输出:

接下来,我们把词云做成我们想要的形状。用pillow读取某张图片,转换成numpy array格式,并将其设置为mask(遮罩)。除图片全白的部分将不会被绘制,其余部分会用于绘制词云。

from wordcloud importWordCloud, STOPWORDSimportjiebafrom PIL importImageimportnumpy as npfrom matplotlib importpyplot as plt

fig,ax=plt.subplots()

with open(r'...\名利场.txt','rb') as f:

text=f.read()

wsplit=jieba.cut(text)

words="".join(wsplit)

shape=np.array(Image.open(r'C:\Users\ccav\timg.jpg'))

mycloudword=WordCloud(font_path=r'C:\Windows\Fonts\msyh.ttf',

scale=1,

margin=2,

background_color='white',

mask=shape,

max_words=200,

min_font_size=14,

max_font_size=50,

stopwords=STOPWORDS,

random_state=50).generate(words)

ax.imshow(mycloudword)

ax.axis("off")

plt.show()

mycloudword.to_file(r"...\vanityfair2.png")

原图:

输出的词云:

此外,还可以让词按某个图片的颜色进行显示。用recolor([random_state, color_func, colormap])对现有输出重新着色。(重新上色比重新生成整个词云要快很多)

添加以下这几句即可:

from wordcloud importImageColorGenerator

color=ImageColorGenerator(np.array(Image.open(r'...\timg2.jpg')))

mycloudword.recolor(color_func=color)

原图:

输出:

java怎么画词云_Matplotlib学习---用wordcloud画词云(Word Cloud)相关推荐

  1. java画图板代码_java学习小总结——画图板制做(附代码)

    学习java这门编程语言也有一个多月了.~若是能用本身学的编程语言去开发一些小程序软件能够说是本身一直求之不得吧!.模仿XP的画图板的开发则是学java来最先作的一个小软件.也是把以前学到的不少知识得 ...

  2. 小样本点云深度学习库_基于点云深度学习的点云数据集制作系统及方法与流程...

    本发明涉及测控技术领域,尤其涉及一种基于点云深度学习的点云数据集制作系统及方法. 背景技术: 深度学习网络模型一般都是基于64线单帧激光数据集进行.但64线激光器和单帧的限定,造成了工程应用中点云数据 ...

  3. 微信小程序云开发 mysql_微信小程序云开发学习笔记(一)云数据库

    云开发配置的环境:cloud-learning 云开发环境初始化准备 需要: APPID 操作: 在创建项目时,填入APPID并选择不使用云函数 进入到开发者页面,点击左上角的云开发并选择开通 设置云 ...

  4. 微信小程序云开发学习(一)/ 设置云开发 与 数据查询

    1.创建项目 这里我选的第二个 :不使用云服务,生成的目录和正常的小程序目录一样,然后自己新建一个云环境的目录 cloud,填上自己的appid 如果选了第一种 小程序与开发的话 ,目录他自会自动生成 ...

  5. 微信小程序云开发学习笔记(二)云函数

    一.创建一个云开发的小程序 1. 如下图所示创建小程序 2. 删除无关文件 删除前: 删除后: 3. 删除无关代码 index.wxml index.wxss 内的代码全部清空,index.js保留如 ...

  6. 打造企业级云深度学习平台——小米云深度学习平台的架构设计与实现

    作者:陈迪豪,小米深度学习工程师,负责小米云深度学习平台的架构和实现,目前专注于TensorFlow和Kubernetes社区. 责编:何永灿,欢迎人工智能领域技术投稿.约稿.给文章纠错,请发送邮件至 ...

  7. Java云同桌学习系列(十三)——前端技术之HTML与CSS

    本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,可以跟随我的步伐一起学习,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌& ...

  8. python的总结与心得词云设计理念_Python编程语言:使用词云来表示学习和工作报告的主题...

    上一篇文章,小编和大家分享的一维数据定义和处理方法,以及小编自己的理解,这篇文章小编要和大家分享的是通过Python编程程序来汇总词云,用来表达学习和工作报告的鲜明主题! 首先我们要知道什么是词云,词 ...

  9. 面试官系统精讲Java源码及大厂真题 - 01 开篇词:为什么学习本专栏

    01 开篇词:为什么学习本专栏 更新时间:2019-10-30 10:08:31 才能一旦让懒惰支配,它就一无可为. --克雷洛夫 不为了源码而读源码,只为了更好的实践 你好,我是文贺,Java 技术 ...

最新文章

  1. NCEPU:线下组队学习周报(009)
  2. python的class的__str__和__repr__(转)
  3. Valgrind 快速入门
  4. 好的Java架构具备的5个特点
  5. python中的help()的用法
  6. 使用raphael.js绘制中国地图
  7. 数据结构-单链表的正向排序
  8. WinQSB的19个子系统简介
  9. Houdini地形与流体解算(模拟泥石流)
  10. IDEA ideaIU点击无反应
  11. Linux下几种定时器的使用
  12. unity overrideSprite的使用
  13. 威廉.大内的Z理论(1981)--轉載
  14. linux 查看zookeeper目录,查看zookeeper注册中心是否有注册服务
  15. sql统计各科成绩大于平均分的人_数据分析师SQL面试必备50题
  16. 微服务 分布式配置中心Apollo详解
  17. 使用ajax发送数组请求,Ajax请求传递数组参数
  18. Techwiz OLED:透明显示
  19. Latex表示随机变量相互独立,不独立
  20. HTML+CSS网页设计期末课程大作——绿色精美全民健身网站(10页) dreamweaver作业静态HTML网页设计模板

热门文章

  1. html属性选择器怎么写,html – 具有“type”属性与make-up属性的CSS属性选择器和区分大小写...
  2. cnil在python_在Python中使用cumprod()计算权益曲线
  3. springboot的jsp应该放在哪_自己账户里应该持有几只股票
  4. 在形态的世界里寻找基数的影子
  5. 做一个可以和时空分类的神经网络
  6. Loss Function , Cost Function and Kernel Function in ML(To be continued)
  7. 3.9 神经网络解决多分类问题-机器学习笔记-斯坦福吴恩达教授
  8. STM32 基础系列教程 49 – Jansson
  9. android的各种*.img 文件
  10. 【测试】ESP32天线信号强度比较,小龟小车A2天线esp32cam板载外置天线测试数据...