词云图制作(wordcloud & pyecharts)

7 篇文章 0 订阅
订阅专栏
7 篇文章 1 订阅
订阅专栏

现在,网上很多可视化的方法,有一种就是词云图。

词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,方便领略文本的主旨。

词云图的原理整体来说比较简单,但是效果还是蛮不错的,可以从纷繁复杂的信息中找到最关键的信息~感觉可以用来进行政策分析、新闻舆情的分析~

主要研究的是用python和第三方包的方式来进行制作~当然,网上也有一些在线的网站可以支持,但是直接写好脚本调用,就不用自己一个一个导入啦,批量生成最近政策的关键图像,也是蛮不错的哟~

之前接触词云图一直用的是worldcloud这个包,最近又接触到了pyecharts,也可以进行词云图的制作。

wordcloud生成词云图

wordcloud 安装

直接使用pip安装wordcloud~因为涉及到要进行图片生成,所以,也要下载安装matplotlib。

pip install wordcloud
pip install matplotlib

wordcloud API

wordcloud 库把词云当作一个WordCloud对象来进行处理:

  • WordCloud([font_path, width, height, …]) - 进行词云图对象的创建和绘制
  • ImageColorGenerator(image[, default_color]) - 根据图片颜色生产词云绘制颜色
  • random_color_func([word, font_size, …]) - 随机生成词云绘制颜色
  • get_single_color_func(color) - 使用单色进行词云绘制

使用Wordcloud对象可以进行词云图的绘制,其中,可以设置图片的形状。

wordcloud使用

词云图生成准备

对于中文来说,和英文不太一样,英文本身使用单词的空格进行了天然的划分~所以,在进行词云图生成的时候,需要和英文一样对于中文进行分词的处理,也就是按照中文词语的意思进行词的划分~

目前,国内最常采用的中文分词工具是jieba包。

jieba分词包下载安装

pip install jieba

jieba分词包使用

使用jieba的方法进行文章分词,常用的是cut()和lcut(),可以根据需要进行选用。

  • jieba.cut() - 生成一个生成器,如果想要得到list,需要使用for循环得到
  • jieba.lcut() - 直接得到分词后的list
import jieba


text = '你想要分词的文本数据'

# jieba.cut() - 生成一个生成器,如果想要得到list,需要使用for循环得到
word_list1 = [word for word in jieba.cut(text)]

# jieba.lcut() - 直接得到分词后的list
word_list2 = jieba.lcut(text))

如果文本为从txt等文件中获得,则使用open()的方式进行文本获取,并且,使用re的函数来进行中文提取~

import jieba
import re

# 使用open()进行文件读取
text = [i.strip() for i in open('你的文件.txt').readlines()]

# cut_all = False - 表示使用精确模式进行拆分
# re.findall('[\u4e00-\u9fa5]', text) - 表示进行中文提取
word_list = []
for sentence in text:
    text = jieba.lcut(''.join(re.findall('[\u4e00-\u9fa5]', sentence)), cut_all = False)
    word_list.append(text)

停用词使用

 因为中文中有很多语气词和连接词,出现的次数多,但是意义并不大,而词云图又会对这些词进行统计,所以,在生成最终的词的频率分布时,需要将这些意义不大的词给剔除掉~

目前,网上已经有很多成熟的停用词库,可供使用。因此,我们可以创建我们自己的分词方法,便于后续的调用。

# stopwords为停用词list
# stopwords = [i.strip() for i in open('stop_words.txt').readlines()]
# 直接读取转为list后使用

# cut_word() - 针对于每一句进行处理
def cut_word(sentence, stopwords):
	text = jieba.lcut(''.join(re.findall('[\u4e00-\u9fa5]', sentence)), cut_all = False)
	for i in range(len(text)-1, -1, -1):
		if text[i] in stopwords:
			del text[i]
	return text

这样,我们通过目标文件读取 - 目标文件分词 - 停用词剔除,得到最终分词频率分布表。全流程如下:

# muziyi1994 code
import jieba
import jieba.analyse
import re

def cut_word(sentence, stopwords):
	text = jieba.lcut(''.join(re.findall('[\u4e00-\u9fa5]', sentence)), cut_all = False)
	for i in range(len(text)-1, -1, -1):
		if text[i] in stopwords:
			del text[i]
	return text

def main():
	filename = "十三五规划.txt"
	stopword_file = "stopwords.txt"
	# 读取目标文本
	target_list = [i.strip() for i in open(filename).readlines()]
	# 读取停用词
	# 网上搜到的一些常用的停用词
	stopwords = [i.strip() for i in open(stopword_file).readlines()]
	# 使用jieba包进行分词拆分
	word_list = [" ".join(cut_word(sentence, stopwords)) for sentence in target_list]
    # 使用空格来成为分隔符,并连接生成新文本
	new_text = ' '.join(word_list)

词云图生成

在得到了处理过后的新文本后,就可以使用wordcloud创建对象后进行处理了。

wordcloud对象创建

wordcloud.WordCloud(font_path=Nonewidth=400height=200margin=2ranks_only=Noneprefer_horizontal=0.9mask=Nonescale=1color_func=Nonemax_words=200min_font_size=4stopwords=Nonerandom_state=Nonebackground_color='black'max_font_size=Nonefont_step=1mode='RGB'relative_scaling='auto'regexp=Nonecollocations=Truecolormap=Nonenormalize_plurals=Truecontour_width=0contour_color='black'repeat=Falseinclude_numbers=Falsemin_word_length=0collocation_threshold=30)

上述为wodcloud创建是可使用的参数,比较常用的参数为:

  • font_path: 字体文件路径,找到自己喜欢的字体并配置上路径即可,特别是中文词云图是一定需要配置的。
  • max_font_size: 最大字号设置
  • width/height: 画布的宽和高,默认为400/200
  • background_color: 背景颜色,默认是黑色
  • contour_width/contour_color: 轮廓线宽/轮廓线颜色
  • max_words: 所展示词的最大容量,默认为200
  • mask: 蒙版功能,白色部分会默认不会进行绘制。可以搭配图片进行特定样式词云图生成。

词云图简单配置生成

如果只是想要进行简单的词云图生成,简单配置好字体路径,搭配generate()进行使用就可以啦~最后,使用to_file()进行对应生成图片生成即可完成整体创建。

font_path = 'simhei.ttf'
# new_text以空格区分的字符串
wordcloud1 = WordCloud(font_path=font_path).generate(new_text) 
# 在当前目录下生成对应的图片
wordcloud1.to_file("wordcloud1.png")

 输出结果:

 词云图生成特定模式

如果想要生成有不同样式的词云图,可以使用mask进行操作。为了读取图片,可以使用对应的包进行图片的读取,本人选用的是matplotlib.image进行相应的操作。因为图片的读取是一个非常常用的操作,很多图片处理的包都可以进行操作。

import matplotlib.image as mpig
# 读取对应的图片
mask = mpig.imread("mask.jpeg")

# 使用wordcloud中的mask进行相应版式词云图生成
font_path = 'simhei.ttf'
wordcloud2 = WordCloud(font_path=font_path, mask=mask).generate(new_text)
wordcloud2.to_file("wordcloud2.png")

使用图片:

我使用的是一个四叶草的图片,生成了四叶草词云图,大家可以使用自己喜欢的图片进行生成,注意让背景是白色地板就行啦~

输出结果:

 

词云图输出

一般为了直接生成词云图,直接使用to_file()即可,还可以输出其他格式。

  • to_array() - 输出numpy格式的array
  • to_file(filename) - 输出为图片
  • to_svg([embed_font, optimize_embedded_font, …]) - 输出为svg

pyecharts生成词云图

Echarts 是百度基于JavaScript 开源的可视化图表库,而 Pyecharts 则可以使用python来调用echarts的开源库,从而制作精美的图表。主要使用上还是会来做一些其他图表的生成,但是它也提供词云图的生成办法。

整体的词云图生成逻辑是和上述一致的,首先需要进行分词处理和停用词删除操作,然后调用pyecharts的函数WordCloud()来进行处理,当然,输入的data也需要是规定的模式。

pyecharts安装

直接使用pip进行安装

pip install piecharts

WordCloud()函数介绍

官方有针对于词云图的使用函数进行详细的介绍:

pyecharts 词云图函数介绍Descriptionhttps://pyecharts.org/#/zh-cn/basic_charts?id=wordcloud%EF%BC%9A%E8%AF%8D%E4%BA%91%E5%9B%BE

pyecharts生成词云图

有很多参数可以进行调整后制作精美的效果,但是,对于简单的词云图生成,只需要知道在那边灌入数据就好了~

词云图数据准备

# 同样的方式处理拿到的原始数据
target_list = [i.strip() for i in open(filename).readlines()]
stopwords = [i.strip() for i in open(stopword_file).readlines()]
# cut_word为前面所写的方法
word_list = [" ".join(cut_word(sentence, stopwords)) for sentence in target_list]
new_text = ' '.join(word_list)

# 生成对应的输入版式
# 使用jieba.analyse提取前200的分词标签
tags=jieba.analyse.extract_tags(new_text,topK=2000,withWeight=True)
# 构建输入
tf=dict((a[0],a[1]) for a in tags)
data=[[k,v] for k,v in tf.items()]

这样,我们就可以得到一个list,可供后续词云数据输入。

词云图生成

使用WordCloud()函数进行生成。

简单生成

# (1)简单生成
wc1 = (WordCloud()
.add(series_name="词云图", data_pair=data, word_size_range=[6, 66])
.set_global_opts(
	title_opts=opts.TitleOpts(
		title="词云图", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
	),
	tooltip_opts=opts.TooltipOpts(is_show=True),
))
# 生成词云图html
wc1.render("wordcloud1.html")

输出结果:

使用shape参数丰富输出

shape: 词云图轮廓,有 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star' 可选。

# (2)使用shape参数丰富输出
# shape: 词云图轮廓,有 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star' 可选
wc2 = (WordCloud()
.add(series_name="词云图", data_pair=data, word_size_range=[6, 66], shape = 'cardioid')
.set_global_opts(
	title_opts=opts.TitleOpts(
		title="词云图", title_textstyle_opts=opts.TextStyleOpts(font_size=23)
	),
	tooltip_opts=opts.TooltipOpts(is_show=True),
))
# 生成词云图html
wc2.render("wordcloud2.html")

输出结果

自定义图片

 使用mask_image参数进行图片形状自定义。

mask_image自定义的图片(目前支持 jpg, jpeg, png, ico 的格式)

该参数支持:

  1. base64;
  2. 本地文件路径(相对或者绝对路径都可以)
# 直接使用路径进行操作
mask_img = "mask.png"
wc3 = (WordCloud()
	.add(series_name="词云图", data_pair=data, word_size_range=[6, 66], mask_image=mask_img)
	.set_global_opts(title_opts=opts.TitleOpts(title="词云图-自定义图片"))
)
wc3.render("wordcloud3.html")

 使用的是同样的四叶草图片,得到输出结果

整体来说,用起来还是相对来说比较简单和方便的,大家可以尝试用一下呀~

我这边选择的是十三五规划的一些文本,我们可以看到信息化这个关键词是非常关键的,所以,一定程度上意味着,国内针对于信息技术的重视程度在不断的提升。

相应的参考文本和代码我整理了一下,希望可以和大家一起学习和成长~

词云图学习(wordcloud&pyecharts)-统计分析文档类资源-CSDN下载用wordcloud和pyecharts中的WordCloud方法进行词云图创建更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/u014530058/85060913

资料来源:

(1)worldcloud 官方文档: http://amueller.github.io/word_cloud/

(2)pyechart 官方文档:  https://pyecharts.org/#/zh-cn/intro

【超详细】Python如何使用Pyecharts+TextRank生成词云图
weixin_68789096的博客
11-20 2717
Pyecharts是一个Python可视化库,用于创建交互式和美观的图表。它基于著名的JavaScript可视化库Echarts,通过在Python中调用Echarts的功能,使用户能够在Python环境中轻松地绘制各种类型的图表,包括折线图、柱状图、饼图、散点图等;Pyecharts提供了一个简单而直观的API接口,使得使用者无需了解复杂的JavaScript语法,即可通过Python代码实现高度定制化的图表设计。TextRank算法是由和Paul Tarau在2004年提出的;它基于。
文本数据“关键词渲染”的高频词可视化——词云图
sutiao_的博客
06-09 3411
pyecharts是将Python与Echarts相结合的数据可视化工具, ​
文本分析之词云图的绘制
weixin_71158509的博客
01-09 644
词云图通常以词汇的出现频率为基础,将频率较高的词汇在图中显示为较大的字体,频率较低的词汇则以较小的字体显示。词云是一种对文本数据进行可视化展示的方式,通过将文本中的关键词以不同字体大小或颜色展示在图像中,以突出显示出现频率较高的关键词。5. 绘制词云图:根据关键词的权重,使用特定的绘图库(如WordCloud)将关键词以不同字体大小或颜色进行展示,形成词云图。绘制词云图的原理简单,但其能够直观地展示出文本中的关键信息,有助于我们对文本进行分析和理解。参数设定词云图中最多显示的词的数目。
python 绘制词云图(自定义png形状、指定字体、颜色)最全!!!
yuan_hou_的博客
04-18 4311
教你如何生成一张让自己满意的词云图,从引用的库、阅读文本、分词并设置停用词、设置png掩膜、字体设置等到生成词云图
让你的作品更出色——词云Word Cloud制作方法(基于pythonWordCloud,stylecloud)
热门推荐
逆境清醒的博客
04-02 2万+
词云,又称文字云,英文名:Word Cloud。是文本数据的视觉表示形式。就是对指定范围文本中出现频率较高的“关键词”予以视觉上的突出表现,从而过滤掉大量的文本信息,形成“关键词云层”或“关键词渲染”,使浏览网页者只要一眼扫过文本就可以领略文本的主题宗旨。简单来说,我们看到的那种上面一堆大小不一的文字,有些是通过文字形成一个特定轮廓的那种图片或图像,我们称之为词云。一个好的词云可以直观地展示一个文章的主题,方便他人快速感知了解最突出的文字,同时自定义的美观样式和颜值也很能打。
2024年【R语言文本挖掘】:情感分析与词云图绘制_情感词云,大数据开发大厂高级面试题灵魂100问
最新发布
2401_84181145的博客
05-09 255
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新需要这份系统化资料的朋友,可以戳这里获取单词文本的大小与其在情绪中的频率成正比。我们可以使用这种可视化来查看最重要的正面和负面词,但词的大小在不同情绪之间没有可比性[外链图片转存中…(img-VvRynxlC-1715233098777)]
Python做中文分词和绘制词云图
12-04
通过窗体自选文本文件和词云绘制图文件绘制词云,可自行设置词云的词数量和词云字体大小
pyecharts——WordCloud词云图
冰影随风的专栏
07-04 4794
pecharts中的wordcloud()库的使用
白话词云图制作
wujiandao的专栏
04-21 583
在数据行业深耕细作很多年,反复的从前端 UI 做到中间服务层,最后连数据库存储也没有放过,至今也一直被数据库以及数据库应用架构深深吸引着。 在之前面试很多数据岗位的时候,反复被面试官质疑的问题是,“你到底是喜欢做 ETL, 数据模型,还是数据可视化?” 其实这个问题在我看来一点都没水准。做数据行业的,哪能说自己特别偏科某一项呢,不都是动脑子的事情嘛,那么多精彩的技术,引人入胜的问题,不都全部...
Python pyecharts绘制词云图
Python_xiaowu的博客
12-31 5698
一、pyecharts绘制词云图WordCloud.add()方法简介 WordCloud.add()方法简介 add(name,attr,value, shape="circle", word_gap=20, word_size_range=None, rotate_step=45) name str 图例名称 attr list 属性名称 value list 属性所对应的值 shape 词云图轮廓 对应属性可选'circle', 'rect', 'roundRect', 'triangle', 'd
词云图制作,简单几步,轻松实现
05-05
词云图制作代码,txt文件,所用图片,词云图制作代码,txt文件,所用图片,词云图制作代码,txt文件,所用图片,词云图制作代码,txt文件,所用图片,词云图制作代码,txt文件,所用图片,
Python制作词云图代码实例
09-18
主要介绍了Python制作词云图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
词云图学习(wordcloud & pyecharts
03-31
wordcloudpyecharts中的WordCloud方法进行词云图创建
词云图wordcloud多个案例展示
07-31
词云图wordcloud多个案例展示,多个demo,比较多,是处理英语词的,中文的还要用到jieba分词。
Python基于WordCloud制作词云图
09-18
主要介绍了python基于WordCloud制作词云图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Python 3.6 版本词云图wordcloud包 for windows
02-18
wordcloud-1.4.1-cp36-cp36m-win_amd64.whl 是一个为 Python 3.6 版本(64位)在 Windows 操作系统上预编译的 wordcloud 库的二进制文件。这个 .whl 文件使得安装 wordcloud 库变得更为简单,因为你不需要从源代码...
三国演义.txt(wordcloud词云制作
04-08
该文件是https://blog.csdn.net/weixin_44957635/article/details/105389218博客里面的示例三国演义.txt.
词云图制作指南
sinat_35676815的博客
12-20 2532
轻松学会词云图制作
python词云图代码wordcloud
05-26
下面是一个使用Python实现词云图的示例...然后使用`WordCloud`库生成词云图,使用`matplotlib`库展示我们生成的图表。其中,`font_path`参数指定了使用的字体文件路径,`background_color`参数指定了词云图的背景颜色。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 词云图制作(wordcloud & pyecharts) 19110
  • 解决Font family [‘sans-serif‘] not found的问题 8259
  • Anaconda Mac pro m1 安装 7717
  • Tushare 学习 - tushare pro使用 7094
  • Baostock学习 - Mac 安装 baostock 4249

分类专栏

  • 问题解决库 2篇
  • 数据分析学习 7篇
  • 计算机学习 5篇
  • python学习 7篇
  • 量化学习 4篇

最新评论

  • Ta-lib学习 - Mac 安装 Ta-lib

    小橙105: 太感谢了大佬,我参考你的方法安装了Alfred,一下子就成功了表情包

  • Anaconda Mac pro m1 安装

    m0_70484853: 为什么我没有individual啊表情包

  • 解决Font family [‘sans-serif‘] not found的问题

    菜菜苗: 有用有用,非常感谢!

  • 解决Font family [‘sans-serif‘] not found的问题

    LXFfff1999: 吊吊吊

  • 词云图制作(wordcloud & pyecharts)

    weixin_58006135: 背景颜色怎么设置

大家在看

  • 【NOIP普及组】税收与补贴问题
  • 2024年6月 AWVS -24.4.27详细安装教程附下载教程含windows和linux多版本
  • 新鲜速递:图解新颖LLM的CoPE位置编码 99
  • 大模型备案全网最详细说明【+附件】 551
  • 3.4K Star!一个高性能的跨平台图表库!支持H5、APP、及各种小程序!太强了! 194

最新文章

  • Mac Pro m1打出反引号
  • CDA II级学习 - CDA II级考试大纲
  • 微软技能挑战赛 - Microsoft Build Cloud Skills Challenge | May 2022
2022年19篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码汉中百姓网标王公司襄阳优化价格海北百度网站优化荆门网站关键词优化报价湛江百度网站优化排名公司九江关键词按天计费公司来宾网站优化按天扣费朝阳网站关键词优化多少钱广州建站报价焦作模板推广推荐坪地外贸网站设计推荐普洱营销型网站建设公司塘坑营销型网站建设推荐莱芜关键词排名价格北京网站推广系统推荐广元营销网站价格资阳网站建设设计哪家好宁波阿里店铺运营多少钱海西网站开发公司青岛关键词按天计费报价和田优秀网站设计价格济南网站改版哪家好天水模板制作推荐扬州网络营销多少钱商洛网站优化排名推荐拉萨网页制作公司大芬网站优化排名多少钱迪庆网站制作设计多少钱徐州网站搜索优化公司崇左seo优化推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化