1. 量身打造属于你的词云图

今天的Python案例是跟着笔者来打造属于自己的词云图。那么什么是词云图呢?我们在百度中来搜索一下,如图所示:

概念:词云图就是由词汇组成类似云的彩色图形。接下来我们就可以去为自己量身打造一张词云图了,但是笔者在这里的话就不拿自己的照片来进行演示了。最近很火的一部电影冰雪奇缘2,不知道大家有没有看过。无论是美轮美奂的画面质感,还是艾莎的造型如图1所示,都得到了众多人的喜爱,全球各地再度掀起了一股艾莎热潮。

接下来我们用Python来分析下这部电影的剧情并以艾莎为背景绘制词云图,效果如图2所示。

第一步:首先的话我们要准备一张遮照图,用来绘制词云的形状的,如果是想要拿自己的照片来做的话,一定要使用抠图技术将浓烈的背景换为纯色的背景。第二个的话就是我们需要准备相关的文本信息,文本信息越多,生成的图片信息越丰富。如图所示。

第二步:安装第三方模块,此次要使用到5个第三方模块,分别是matplotlib 数据可视化模块,numpy 数值计算模块,jieba 分词模块,wordcloud 词云模块,Pillow(PIL) 图像处理模块,如果不知道Pillow模块怎么使用的话,可以去看笔者的另一篇博文 图片转字符画,以上模块安装命令如下:

pip install --user -i http://pypi.douban.com/simple --trusted-host pypi.douban.com matplotlib

pip install --user -i http://pypi.douban.com/simple --trusted-host pypi.douban.com numpy

pip install --user -i http://pypi.douban.com/simple --trusted-host pypi.douban.com jieba

pip install --user -i http://pypi.douban.com/simple --trusted-host pypi.douban.com wordcloud

pip install --user -i http://pypi.douban.com/simple --trusted-host pypi.douban.com pillow

第三步:编写代码。主要是分为6个步骤,使用open()方法读取文本信息

读取遮照图片

生成词云图

显示词云图

使用jieba进行中文分词

设置词云图渲染颜色

示例代码如下:

import numpy as np

from PIL import Image # 导入PIL模块中的Image对象

import wordcloud # 导入词云模块

import matplotlib.pyplot as plt

import os

import jieba

from wordcloud import ImageColorGenerator

file_name = "elsa.txt"

pic_name = "elsa.png" # 你自己是什么文件名你就写什么文件名

# 判断文件是否存在

if os.path.exists(file_name):

with open(file_name, "r") as file: # 读取文件

content = file.read()

if content: # 判断文本内容是否为空

# 进行分词处理c 返回的是一个对象 需要使用"".join进行拼接

cut_text = jieba.cut(content)

word = " ".join(cut_text) # 拼接

img = np.array(Image.open(pic_name)) # 读取图片

img_colors = ImageColorGenerator(img)

# 生成词云图

# mask: 置顶遮罩图 img

# font_path: 设置字体

# background_color: 设置背景颜色

wd = wordcloud.WordCloud(mask=img, font_path="simhei.ttf", background_color="white")

wd.generate(word) # 生成词云图

# 显示词云图

plt.imshow(wd.recolor(color_func=img_colors), interpolation="bilinear")

plt.axis("off") # 关闭显示x轴/y轴下标

plt.savefig("elsa_cy.png") # 保存词云图到本地

plt.show()

else:

print("大哥,你在逗我吗,没文件我咋读勒!")

运行结果如图所示:

接下来,是读者们自由发挥的时间,你可以尝试找一些自己感兴趣的文本数据进行分析,开启你的脑洞绘制自己想要的词云。

2. 11行代码完成"风云"

相信大家小的时候,都看过风云这部电视剧吧。最近笔者在抖音上经常看到呢,什么无名满血拉二胡,残血到处浪之类的经典评语。哈哈哈哈哈,言归正传,接下来的任务就是用11行代码完成电视剧风云词云图!首先去百度百科找下风云电视剧的剧情简介,然后粘贴到文本文件,去掉空行后保存为fy.txt。其次使用open方法读取文本文件,然后使用jieba模块分析文本,最后通过wordcloud模块制作词云图,通过matplotlib模块显示词云图。如图所示。

示例代码如下:

import matplotlib.pyplot as plt

import wordcloud

import jieba

with open("fy.txt", "r") as file:

content = file.read() # 读取文本文件内容

cut_text = jieba.cut(content) # 分词 返回一个生成器对象

word = " ".join(cut_text) # 字符串拼接

wc = wordcloud.WordCloud(font_path="simhei.ttf", background_color="white")

wc.generate(word) # 生成词云图

plt.imshow(wc) # 显示词云图

plt.axis("off") # 关闭x轴和y轴坐标显示

plt.show()

3. 自定义颜色的外星人

你是否也思考过,怎样用自己喜欢的颜色来绘制词云图?下面你的任务就是实现自定义词云图颜色,使词云图更加形象、靓丽。以外星人为例,相信很多读者觉得这个LOGO眼熟,没错它就是我们和外星人一起学全彩系列图书的LOGO。

图1是原版外星人,我们来看看图2,词云图使用的是默认颜色,与原版相比有些逊色;再来看看图3,使用了红黑色混搭,是不是看起来接近原版了呢?示例代码如下:

import jieba

import wordcloud

import matplotlib.pyplot as plt

from matplotlib import colors

from scipy.misc import imread # 注意scipy是要使用pip安装的

# 安装命令如下:

# pip install --user -i http://pypi.douban.com/simple --trusted-host pypi.douban.com scipy==1.2.0

with open("wxr.txt", "r") as file:

content = file.read() # 读取文件内容

cut_text = jieba.cut(content) # 分词处理

word = " ".join(cut_text) # 拼接

color_list = ["black", "red"] # 红黑色值

# 多种颜色

# color_list = ["LightCoral", "RosyBrown", "IndianRed", "Red", "Brown", "FireBrick"

# , "DarkRed", "Maroon", "Gainsboro", "LightGray"

# , "Silver", "DarkGray", "Gray", "DimGray", "Black"]

color_map = colors.ListedColormap(color_list) # matplotlib色图

img = imread("wxr.png") # 读取图片

wd = wordcloud.WordCloud(mask=img, font_path="simhei.ttf", background_color="white", colormap=color_map) # 生成词云图

wd.generate(word)

plt.imshow(wd) # 显示词云图

plt.axis("off") # 关闭x轴和y轴的坐标显示

plt.savefig("图3.png")

plt.show() # 显示

4. 自行构造中文停用词

在绘制词云图过程中,词云中包括一些无用的字符和一些不想要的词,该如何处理?例如,我们得到一些有关电影小丑的评论内容,然后将其绘制成词云图,但是在文本数据中存在一些特殊字符如《、》、?、...和一些我们不想要的、没有意义的词,如一个、展开、回应、可能、没有、这部等,如图1所示。

实现思路:手动添加停用词 通过stopwords.update()方法手动添加停用词。

根据已有停用词库遍历文本滤除停用词 网上找到一些现成的停用词库,下载或复制到文本文件中备用,然后判断滤除停用词重新生成新词,赋值给词云图。

示例代码1如下:

import re

import matplotlib.pyplot as plt

from matplotlib import colors

import jieba

import wordcloud

from wordcloud import WordCloud

import imageio

# 读取文件

str1 = open('joker.txt','r').read()

#文本数据处理

pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|\[|\]| ;|,|。|"')

str1 = re.sub(pattern, '', str1)

#自定义小丑颜色

color_list=['darkslategray','red','orange','darkred']

colormap=colors.ListedColormap(color_list)

#文本分词处理制作词云

cut_text = jieba.cut(str1, cut_all=True) # cut_all=False 表示采用精确模式

word = ' '.join(cut_text)

#图片背景

pic = imageio.imread('小丑.png')

#设置中文停用词

stopwords = set('')

stopwords.update(['展开','回应','一个','影评','可能','一部','没有','我们','这个','这部','电影','就是'

,'大家','不是','只是','因为','一些','本片'])

#生成词云图

wd = wordcloud.WordCloud(

mask=pic,

font_path='simhei.ttf',

colormap=colormap,

stopwords = stopwords,

background_color='white'

)

#将长文本分词并去除屏蔽词

process_word = WordCloud.process_text(wd,word)

#对文本词排序(根据字典中值的大小,对字典中的项排序)

sort = sorted(process_word.items(),key=lambda x:x[1],reverse=True)

print(sort[:50]) # 输出文本词频最高的前50个词

wd.generate(word)

plt.imshow(wd)

plt.axis('off')

plt.show()

运行结果如图所示:

示例代码2如下:

import re

import jieba

import wordcloud

import matplotlib.pyplot as plt

from matplotlib import colors

import imageio # 需要安装

# 安装命令如下:

# pip install --user -i http://pypi.douban.com/simple --trusted-host pypi.douban.com imageio

with open("joker.txt", "r") as file:

content = file.read() # 读取文件内容

pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|\[|\]| ;|,|。|"') # 正则

str1 = re.sub(pattern, '', content) # 处理文本数据 将上面匹配到的都替换为空字符串

color_list = ['darkslategray', 'red', 'orange', 'darkred'] # 自定义小丑颜色

color_map = colors.ListedColormap(color_list)

# cut_all=False: 表示采取精确模式

cut_text = jieba.cut(content, cut_all=True) # 文本分词处理制作词云

word = " ".join(cut_text) # 拼接

img = imageio.imread("小丑.png")

# 读取停止词文件并保存到列表中

stopwords = [line.strip() for line in open("stopwords.txt").readlines()]

new_word = ''

# 滤除停用词

for s in word:

if s not in stopwords:

new_word += s

wd = wordcloud.WordCloud(mask=img, font_path="simhei.ttf", background_color="white", colormap=color_map) # 生成词云图

wd.generate(word)

plt.imshow(wd) # 显示词云图

plt.axis("off") # 关闭x轴和y轴的坐标显示

plt.show() # 显示

运行结果如图所示:

此文转载。著作权归作者所有,如有侵权联系小编删除!

python 可以用excel做词云图嘛_今天从零教你开始利用Python打造词云图!相关推荐

  1. 今天从零教你开始利用Python打造词云图!

    1. 量身打造属于你的词云图 今天的Python案例是跟着笔者来打造属于自己的词云图.那么什么是词云图呢?我们在百度中来搜索一下,如图所示: 概念:词云图就是由词汇组成类似云的彩色图形.接下来我们就可 ...

  2. python做桌面软件 代码隐藏_桌面杂乱?教你50行Python代码一键整理桌面!

    我们每天上班会有很多文件来不及处理,全部都在桌面上堆放在了一起,久而久之,就造成了桌面非常的混乱,如下图所示: 乱糟糟的桌面,让心情也会潜移默化的变得烦躁,更重要的是,它会让我们的工作效率变的非常的低 ...

  3. element elcolumn 使用本地图片_年末了,教你如何使用Python实现上班摸鱼

    点击上方"Python全家桶","星标"或"置顶" 关键时刻,第一时间送达 注释:本文已获原作者授权,禁止 二次转载 阅读文本大概需要 8 ...

  4. python语言的单行注释以井号开头_推荐|零基础学习Python基础知识

    原标题:推荐|零基础学习Python基础知识 Python是一种面向对象.解释型计算机程序设计语言.语法简洁清晰,强制用空白符作为语句缩进. Python具有丰富和强大的库,又被称为胶水语言.能把其他 ...

  5. python的模块提供了许多文件管理方法_学会这几招,轻松掌握Python文件管理

    本期责编:Sophie 原文来源 | devshed 译文来源 | wwwjfy 一.Python中的文件管理 文件管理是很多应用程序的基本功能和重要组成部分.Python可以使文件管理极其简单,特别 ...

  6. python代码优化无限营销软件工作室_这个教程价值有点高,利用Python制作全自动化营销软件!...

    前言 利用Python去控制咱们的手机,这样的话全天24小时你可以解放你自己的双手,功能的话可以根据自己的需求多样化. 既然要控制手机,那么咱们需要利用到一个工具 ADB ,这个东西叫做安卓控制桥梁, ...

  7. python批量生成word报告_python自动生成word报告 | 如何将现有的数据利用python 填入word的表格中?...

    关于python连接SQL server数据库的问题? 你把完整的连接代码贴一下 如何将现有的数据利用python 填入word的表格中? VB,VBA我会,py不会哦 DB2教程推荐,新手想学习这个 ...

  8. python import pandas报错找不到_扎心!“我学了半年 Python,还是找不到工作”

    在编程界,Python是一种神奇的存在.有人认为,只有用Python才能优雅写代码,提高代码效率:但另一部分人恨不能把Python喷成筛子.那么,Python到底有没有用,为什么用Python找不到工 ...

  9. 手把手教你如何利用Python薅羊毛(快手极速版)

    不说多话,我们直接进入正文: 一.项目简介 快手极速版看视频,可以有金币奖励,但是需要人手不停的一个视频一个视频的滑动,利用Python的强大功能,通过代码实现自动刷视频,有效解放双手的同时可以薅点羊 ...

最新文章

  1. WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享...
  2. redis 之 sds (二) char []
  3. letswave7中文教程3:脑电数据预处理-ICA去除伪影
  4. div超出不换行_一日一技:XPath不包含应该怎么写?
  5. 【Python】【Flask】
  6. 网络化沟通及协作的人机交互编程语言-机器人语言2
  7. MSSQL 2008 企业管理器打开命令
  8. linux系统有几个系统盘,linux操作系统的分区有哪些种类?各分区主要作用是什么?...
  9. mysql修改密码1820_mysql5.7初始化密码报错ERROR1820(HY000):YoumustresetyourpasswordusingALTERUSERstateme...
  10. nginx配置多个conf文件
  11. jquery java aes_[代码全屏查看]-java、js之间使用AES加密通信数据
  12. numpy.ndarray 交换多维数组(矩阵)的行/列
  13. 火狐与Chrome浏览器的移动端调试模式(手机页面、自适应)
  14. Python入门之经典函数实例
  15. Mujoco安装 最简单方法
  16. vs 应用程序无法正常启动0xc000007b 可能与VS中DLL引用有关
  17. 猎头是怎么找到合适候选人的?
  18. 大学生职业生涯规划书性格特征_大学生职业生涯规划书自我分析
  19. 3000商家挤进云栖小镇,抢滩阿里速卖通平台
  20. Java语言的跨平台性或Java语言为什么说可以跨平台运行

热门文章

  1. mysql 拷贝表(复制表)的几种方式
  2. 8步文献综述指南——肯特大学(翻译)
  3. MySQL正确配置my.ini的event_scheduler = ON
  4. 基于 SpringBoot + MyBatis 的博客系统
  5. sql查询表中的索引
  6. hyper v设置虚拟机动态内存,内存最大最小值
  7. 悬崖勒马回头是岸——关于玩王者荣耀游戏的一些想法
  8. windows下调整linux分区大小,fdisk、parted无损调整普通分区大小 (附:win的c盘分区大小调整)...
  9. Linux---基本指令
  10. 项目策划 文件管理系统