前言

本想果断的说,卡卡西是火影里面最帅的人物。但是出于对大家的尊重,我把这句话改成:“卡卡西是动漫界最帅的人物”,不接受任何反驳。

一、项目介绍

在介绍之前,先给大家来个用香克斯图片做的效果图。

这是我用香克斯的图片作为轮廓,将《霍乱时期的爱情》作为文字素材做的一个词云。看起来还是有几分帅气的。主要使用到的模块有三个,wordcloud、jieba、imageio,其中wordcloud作为主要的模块,今天给大家详细讲解一个具体用法。

二、wordcloud模块讲解

在wordcloud模块中,我们将会使用到两个对象。一个是WordCloud对象,也就是“词云”对象。第二个是ImageColorGenerator对象,也就是“图像颜色产生器”对象。具体的使用后续慢慢讲解。

1、生成一个简单词云

在具体讲解之前,我们先说一下词云的生成步骤。

  1. 准备文本数据
  2. 创建词云对象
  3. 通过文本数据生成词云
  4. 保存词云文件

安装上面的步骤,我们写出如下代码:

import wordcloud# 1、准备文本
sentence = 'Do not go gentle into that good night!'# 2、创建词云对象
wc = wordcloud.WordCloud()# 3、通过文本数据生成词云
wc.generate(sentence)# 4、保存图片
wc.to_file("test_wc.png")

生成的词云如下:

当然,水印可不是我生成的。这个词云比较简单,而且正正方方,背景也是单调的黑色。这可不符合我高贵的身份,于是乎我们对词云进行一些改进。

2、WordCloud的参数和方法

下面列出了一下比较常用的参数:

参数 参数类型 参数介绍
width int(default=400) 词云的宽
height int(default=200) 词云的高
background_color color value(default=“black”) 词云的背景颜色
font_path string 字体路径
mask nd-array(default=None) 图云背景图片
stopwords set 要屏蔽的词语
max_font_size int(default=None) 字体的最大大小
min_font_size int(default=None) 字体的最小大小
max_words number(default=200) 要显示词的最大个数
contour_width int 轮廓粗细
contour_color color value 轮廓颜色
scale float(default=1) 按照原先比例扩大的倍数

还有一些不常用的参数没有提到。

下面看几个WordCloud常用的方法,这里就讲三个:

方法名称 传入参数 方法描述
generate text 根据文本生成词云
recolor [random_state, color_func, colormap] 对现有输出重新着色
to_file filename 输出到文件

3、生成一个带形状的词云

在了解具体参数之后,我们就可以完成一个更为复杂的图云了。具体步骤比之前多了一步:

  1. 准备文本数据
  2. 生成图片的nd-array
  3. 创建词云对象
  4. 通过文本数据生成词云
  5. 保存词云文件

在写代码之前,先准备好一张图片。这里当然选取卡卡西了:

先把准备好的图片素材复制到项目目录下面,和执行的py文件同级(图片背景必须是透明或者全白,不能有其它杂色)。接下来我们开始写代码了:

import wordcloud, imageio# 1、准备文本数据
sentence = "旗木卡卡西,日本漫画《火影忍者》及其衍生作品中的男性角色。火之国木叶隐村的精英上忍,原木叶暗部成员,四代目火影波风水门的弟子,第七班队长,漩涡鸣人、宇智波佐助、春野樱的老师。年仅12岁就成为上忍的天才忍者,后左眼移植宇智波带土的写轮眼,因使用写轮眼复制了上千种忍术而被称为“拷贝忍者”、“写轮眼卡卡西”,其名号响彻各国。"# 2、生成图片的nd-array,传入图片路径
im = imageio.imread('kkx.png')# 3、创建词云对象
wc = wordcloud.WordCloud(#设置宽为600width=600,#设置高为800height=800,#设置背景颜色background_color='white',#设置字体,如果文本数据是中文一定要设置,不然就是方块font_path='msyh.ttc',#设置图片的形状mask=im,#设置轮廓粗细contour_width=1,#设置轮廓颜色contour_color='black'
)# 4、通过文本数据生成词云
wc.generate(sentence)# 5、保存词云文件
wc.to_file('wc.png')

生成词云效果如下:

不得不说,效果确实不尽人意,没有轮廓完全看不出这是什么东西。仔细观察会发现,这里的词全是一大段一大段的,还有很多句子。所有导致词云密度受到很大影响。我们可以继续对这个词云进行美化,这就需要用到分词模块jieba

三、jieba分词模块简介

jieba模块的功能就是对句子进行词语提取,我们调用jieba.cut()方法,然后生成一个可迭代的generator对象,具体是什么我也不知道。在实验过程中,我发现这个对象应该是个迭代器。因为使用的不是非常多,这里就讲解一个非常简单的例子:

import jieba
# 准备要分词的句子
sentence = '爱因斯坦是最伟大的科学家之一'
# 使用精确模式分词
word = jieba.cut(sentence)
# 将返回的generator用空格拼接成字符串
str = " ".join(word)
# 输出分词后的结果
print(str)

输出结果为:

爱因斯坦 是 最 伟大 的 科学家 之一

我们刚刚使用的是默认的精确模式,除此之外还有许多其它模式,这里不做讲解,如果想对jieba模块深入了解可以访问其项目地址 https://github.com/fxsjy/jieba 。

四、jieba和wordcloud结合使用

我们只需要通过我们的jieba,将相应的文本转成一个个词。然后我们有了所以需要的数据,接下来就按照上面的步骤,生成一个由词语组成的词云:

import wordcloud, imageio, jieba
# 1、准备文本数据
sentence = "旗木卡卡西,日本漫画《火影忍者》及其衍生作品中的男性角色。火之国木叶隐村的精英上忍,原木叶暗部成员,四代目火影波风水门的弟子,第七班队长,漩涡鸣人、宇智波佐助、春野樱的老师。年仅12岁就成为上忍的天才忍者,后左眼移植宇智波带土的写轮眼,因使用写轮眼复制了上千种忍术而被称为“拷贝忍者”、“写轮眼卡卡西”,其名号响彻各国。"
# 用jieba将句子分词
word = jieba.cut(sentence)
words = " ".join(word)
# 2、生成图片的nd-array,传入图片路径
im = imageio.imread('kkx.png')
# 3、创建词云对象
wc = wordcloud.WordCloud(width=600,height=800,background_color='white',font_path='msyh.ttc', mask=im,contour_width=1,contour_color='black')
# 4、通过文本数据生成词云
wc.generate(words)
# 5、保存词云文件
wc.to_file('wc.png')

这次就比之前更加紧密了。效果图如下:

但是这个还是感觉少了几分神色,其原因在于我们生成的词云文字颜色是随机的,而最开始给大家看的案例其颜色使按照图片原本的颜色给相应区域的文字设置相应的颜色。

五、按照图片颜色绘制词云

大招步骤还是一样的,正如我标题所说的。我是要绘制一个卡卡西的忍术词云,因此我准备了一个文件旗木卡卡西.txt。具体其内容就是卡卡西的忍术合集。这次我们的大致步骤和之前差不多,只是把准备文本数据从之前的string改成了txt文件。

import wordcloud, jieba, imageio
# 1、准备文本
f = open('kkx.txt', encoding='utf-8')
kkx = f.read()
kkx = jieba.cut(kkx)
kkx = " ".join(kkx)# 2、生成图片的nd-array,传入图片路径
im = imageio.imread('kkx.png')# 3、获取一个图形颜色生成器
image_color = wordcloud.ImageColorGenerator(im)# 4、创建词云对象
wc = wordcloud.WordCloud(width=600,height=800,background_color='white',font_path='msyh.ttc',mask=im,stopwords={'之术'},contour_width=1,contour_color='black',
)# 5、根据文本生成词云
wc.generate(kkx)# 根据图片颜色重绘
rwc = wc.recolor(color_func=image_color)
rwc.to_file('qmkkx.png')

其代码主要有两个部分,一个是使用wordcloud.ImageColorGenerator() 获取图片颜色生成器,另外就是WordCloud中的recolor() 方法重绘词云。效果图如下:

其中第一张是上面代码生成的词云,但是因为密度有点低,我另外用其它文本生成了一个词云作为观看使用。就此我们就完成了卡卡西词云的绘制。

WordCloud生成卡卡西忍术词云相关推荐

  1. python爬取网易云音乐生成王力宏歌曲词云

    python爬取网易云音乐生成王力宏歌曲词云 # -*- coding:utf-8 -*- # 网易云音乐,通过歌手id生成词云 import requests import sys,re,os fr ...

  2. 利用Python生成漂亮的词云,云的形状由你定

    前言 在大数据时代,你竟然会在网上看到的词云,例如这样的. 看到之后你是什么感觉?想不想自己做一个? 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里 ...

  3. Python生成漂亮的词云,云的形状由你定

    前言 在大数据时代,你竟然会在网上看到的词云,例如这样的. 看到之后你是什么感觉?想不想自己做一个? 如果你的答案是正确的,那就不要拖延了,现在我们就开始,做一个词云分析图,Python是一个当下很流 ...

  4. python程序创建词云 中国地图_就这么简单!使用Python生成漂亮的词云

    原标题:就这么简单!使用Python生成漂亮的词云 作者:Linux迷 链接:https://www.linuxmi.com 词云是一种数据可视化技术,用于表示文本数据,其中每个单词的大小表示其出现的 ...

  5. 使用爬虫抓取网易云音乐热门评论生成好玩的词云

    互联网爬虫是一个很有意思的技术,借由爬虫,我们可以做到很多好玩的事情--这其中就包括爬取评论. 词云就是个更好玩的技术,通过技术方法分析词语出现频率,生成可视化的图形,将文字内容用图形呈现,想想就很意 ...

  6. wordcloud 用法及名著词云统计

    python 第三方库 wordcloud 基本用法 wordcloud是一个词云展示的第三方库 ,需要安装使用. 以下演示在windows环境下进行. 演示版本为python3.7.4 1.安装 安 ...

  7. python词云形状为六边形怎么做_python第三方库wordcloud绘制任意形状词云教程

    版权声明:转载附链接哦.https://blog.csdn.net/weixin_43886356/article/details/86711292 此篇教程划分为两种情况,原文本为汉字和原文本为英文 ...

  8. 用R语言,生成微信聊天记录词云。

     首先获取微信聊天记录:并导出为txt文件 基于R语言: #install.packages("jiebaRD") #install.packages("jiebaR&q ...

  9. python黑猫投诉网爬虫,无需修改参数可直接生成投诉内容词云、投诉请求与地址柱形图~(源码)

    import requests import time import pandas as pd import urllib.parse as urp import re from matplotlib ...

最新文章

  1. SAP MM 如何查询物料凭证号是由哪个IDoc Post后产生的?
  2. linux之nl命令
  3. Spring Data Solr教程:Solr简介
  4. 计算机ip地址未修复连接不了无线网络,本地连接没有有效的ip配置,教您修复本地连接没有有效的ip配置...
  5. python鼠标选中事件_python对绑定事件的鼠标、按键的判断实例
  6. 复旦大学邱锡鹏教授《神经网络与深度学习》最新版更新!
  7. 【Android XMPP】 学习资料收集贴(持续更新)
  8. 如何为物联网选择微控制器?
  9. 马云的妻子张瑛有多优秀?
  10. SQLite cursor.moveToNext()
  11. python--自己实现的单链表常用功能
  12. 微信测试环境下不能用window.open()
  13. c语言游戏小型程序代码,C语言小游戏源码
  14. Linux用户与内核空间交互—procfs
  15. 删除自定义reg注册表
  16. 【NLP】神经网络语言模型(NNLM)
  17. UVA1335 Beijing Guards
  18. easyexcel 在 设置标题_EasyExcel,让excel导入导出更加简单
  19. 微信公众号图文如何插入Excel表格
  20. 常见前端面试题及答案

热门文章

  1. Oracle 到 GP 部分函数转换
  2. OWC11绘制双轴图表
  3. python不支持的函数string_Python字符串string常用方法和函数
  4. Q-Learning(强化学习)|机器学习
  5. linux修改mac地址
  6. 我的世界基岩版好还是java版好_【Minecraft/我的世界】Java版和基岩版的区别(1)...
  7. iPad如何越狱?4.2.1完美越狱教程 二 (cydia 安装)
  8. python常见面试题基础部分
  9. 学计算机应该怎样学,初学者该如何学习电脑知识
  10. Samba服务器搭建,win10拒绝访问解决方法