python绘制词云图的心得体会,python如何制作词云图

大家好,小编来为大家解答以下问题,基于python的词云生成及可视化,python制作词云图片的三个步骤,现在让我们一起来看看吧!

大家好,小编为大家解答基于python的词云生成及可视化的问题。很多人还不知道python制作词云图片的三个步骤,现在让我们一起来看看吧!

让你的作品更出色——

词云Word Cloud的制作方法(基于python)

本文目录:

一、词云的简介

二、 实现原理和流程

1、制作词云流程图

2、词云实现原理

三、 实现词云的方式

1、安装词云相关模块库

2、WordCloud库

3、stylecloud库

四、总结

一、词云的简介

  词云,又称文字云,英文名:Word Cloud。是文本数据的视觉表示形式python如何画出多个笑脸。

  就是对指定范围文本中出现频率较高的“关键词”予以视觉上的突出表现,从而过滤掉大量的文本信息,形成“关键词云层”或“关键词渲染”,使浏览网页者只要一眼扫过文本就可以领略文本的主题宗旨。

   简单来说,我们看到的那种上面一堆大小不一的文字,有些是通过文字形成一个特定轮廓的那种图片或图像,我们称之为词云。一个好的词云可以直观地展示一个文章的主题,方便他人快速感知了解最突出的文字,同时自定义的美观样式和颜值也很能打。

  词云的本质是点图,是在相应坐标点绘制具有特定样式的文字的结果。

  由词汇组成类似云的彩色图形词云,用于展示大量文本数据。通常用于描述特定范围内的关键字元数据(标签),或可视化自由格式文本。 每个词的重要性以字体大小或颜色显示。

  适合的数据条数:超过 30 条数据(较好效果)

二、 实现原理和流程

1、制作词云流程图

2、词云实现原理

   某个词云就是指定文章内的关键字集合体。一篇文章我们可以拆分成多个关键词,然后把每个单词出现的频率进行统计。

   比如《红楼梦诗词》文章中“林黛玉”出现了15次,“判词”出现了14次,“薛宝钗”出现了8次,这个次数就是词频。然后根据词频多少,把词频出现多的单词和词频出现少的单词根据不同的字体展示成图片,就实现了这个词云的功能。其中对文章内的关键词进行拆飞就叫做分词。

   在这个流程中还会出现一些问题,比如拆分后的关键词中会有一些我们不想要的词,例如:“【、】、(、)。。。”这些没有多大意义的词和一些本次统计数据里不想被统计到的词,如果它们被统计进词频当中,会干扰词云生成正确的结果。我们把这些不想统计的词叫做停用词,为此可以做一个停用词的列表。

三、 实现词云的方式

   目前主要有两种词云的实现库,一个是最基础的词云wordcloud,另一个是基于wordcloud实现的stylecloud。

1、安装词云相关模块库

   Python中的主流词云生成器是wordcloud,该代码针对 Python 3.7、3.8、3.9、3.10、3.11 进行了测试。

   wordcloud依赖于numpy and pillow,如果要预览或保存生成的词云图,matplotlib也是必须的。要显示统计中文数据,需要安装jieba分词 (中文分词)。

   所以,我们需要安装下面几个模块包:

安装配置好python开发环境后,

pip install numpypip install pillowpip install matplotlibpip install jiebapip install wordcloudpip install stylecloud

2、WordCloud库
(1)、制作简单文本内容词云

   安装好相关的python库后,我们创建一个的python文件,输入下面的代码

#-*- coding: UTF-8 -*-
from wordcloud import WordCloud
# 词云的文本内容
text = "逆境清醒、Adversity Awake、、逆境清醒的博客_CSDN博客、python教程、前端特效实例、python turtle绘图、、源码"
wc.generate(text)
# 将词云存为本地图片png格式
wc.to_file("")

   运行文件,

   在同一个目录里,出现了一张名为:的图片,点击打开,如下图:

   我们发现词云图片里有些中文显示不出来,变成了矩形,这是因为 WordCloud 默认不支持中文的缘故,我们需要设置一个可以支持中文的字体,修改代码:

#-*- coding: UTF-8 -*-
from wordcloud import WordCloud
# 词云的文本内容
text = "逆境清醒、Adversity Awake、、逆境清醒的博客_CSDN博客、python教程、前端特效实例、python turtle绘图、、源码"
wc=WordCloud(font_path='')
wc.generate(text)
# 将词云存为本地图片png格式
wc.to_file("")

   再次运行文件,这次生成的词云图为:

(2)、制作一个由重复单词组成的词云

   用一个重复的单词制作一个词云。

import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud

text = "逆境清醒"

x, y = np.ogrid[:300, :300]

mask = (x - 150) ** 2 + (y - 150) ** 2 > 130 ** 2
mask = 255 * mask.astype(int)

wc = WordCloud(background_color="white", repeat=True, mask=mask,font_path='')
wc.generate(text)

("off")
plt.imshow(wc, interpolation="bilinear")
()

   运行结果:

(3)、使用分词生成词云

   前面举的例子都是使用一个词组生成的词云, 并不算中文的句子。    对句子进行分词需要用到jieba分词库。    以一首歌《就算世界无童话》的歌词(句子进行分词,使用分词生成词云)来举例。

   

就算世界无童话 作词:林夕 作曲:雷颂德 演绎:卫兰

望向每双率真眼睛 似看到 最动人风景 没有嘈音只得笑声 散播到 最远的山岭 ah...... 在这世间分享晚餐 有重担 有万人分担 没有染污的晚海 会看见远方的花瓣 ah...... why i smile cos you make me smile 如所有错失都得到宽待 如计较会被换成慷慨 如纯良仍然能被记载 孤苦的得到理睬 这可算妙想天开 愿这世界如童话 抱着想象实现它 就凭摘星的手臂 为地球每夜放烟花 就算世界无童话 放下包袱完成它 就来学攀山者有心不会怕 如所有苦衷都得到体谅 如占据会被换成分享 如捱穷仍然能被敬抑 挑剔的懂得赞赏 呼吸会更加清香 若你我他一起唱歌 这世界 会动人得多 任你我他相差几多  仍然能同座

import jieba
import jieba.analyse
from wordcloud import WordCloud
import numpy as np
from PIL import Image

text = """
就算世界无童话
作词:林夕
作曲:雷颂德
演绎:卫兰

望向每双率真眼睛
似看到 最动人风景
没有嘈音只得笑声
散播到 最远的山岭
ah......
在这世间分享晚餐
有重担 有万人分担
没有染污的晚海
会看见远方的花瓣
ah......
why i smile
cos you make me smile
如所有错失都得到宽待
如计较会被换成慷慨
如纯良仍然能被记载
孤苦的得到理睬
这可算妙想天开
愿这世界如童话
抱着想象实现它
就凭摘星的手臂
为地球每夜放烟花
就算世界无童话
放下包袱完成它
就来学攀山者有心不会怕
如所有苦衷都得到体谅
如占据会被换成分享
如捱穷仍然能被敬抑
挑剔的懂得赞赏
呼吸会更加清香
若你我他一起唱歌
这世界 会动人得多
任你我他相差几多 
仍然能同座
"""

text_after_split = (str(text), cut_all=False)
words=' '.join(text_after_split)
bg =np.array((""))
wc=WordCloud(width=500,
             height=500,
             mask=bg,
             background_color='black',
             font_path=""
            ) 
wc.generate(words)
wc.to_file("")

   运行结果:

(4)、制作基于.txt文件的词云

   有时我们需要统计的数据量很大,如果放在代码里有点不现实,这时我们可以将需要统计的数据保存成外部文件格式(例如.txt文件),供程序调用。

from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
mask = np.array((""))
f = open('红楼梦诗词.txt','r',encoding = 'utf-8')
text = f.read()
f.close
wordcloud = WordCloud(background_color="white",\
                      width = 800,\
                      height = 600,\
                      max_words = 200,\
                      max_font_size = 80,\
                      mask = mask,\
                      font_path='',\
                      contour_width = 2,\
                      contour_color = 'steelblue'
                      ).generate(text)
wordcloud.to_file('')

   运行效果:

(5)、WordCloud库参数说明

我们可以修改参数,将词云做成不同形状,例如:

  

#常用加载库

#常用加载库:
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

筛选后统计 wc = collections.Counter(result_list)

获取前100最高频的词 wctop50 = word_counts.most_common(50) print(wctop50)

设置显示词云图中无坐标轴 (‘off’) ()

显示生成的词云图 plt.imshow(wc, interpolation=‘bilinear’)

读入文件:

f = open('红楼梦诗词.txt','r',encoding = 'utf-8') text = f.read()

绘制词云 wc = WordCloud( background_color=‘white’, # 设置背景颜色 默认是black width=800, height=600, max_words=100, # 词云显示的最大词语数量100 font_path=‘’, # 设置显示字体 max_font_size=99, # 设置字体最大值99 min_font_size=15, # 设置子图最小值15 random_state=50 # 设置随机生成多少种配色方案 ).generate_from_frequencies(text)

文本预处理 new_data = re.findall(’[\u4e00-\u9fa5]+’, data, re.S) new_data = " ".join(new_data)

文本分词 seg_list_exact = (new_data, cut_all=True)

result_list = [] with open(‘’, encoding=‘utf-8’) as f: con = f.readlines() stop_words = set() for i in con:     i = i.replace("\n", “”) # 去掉读取每一行数据的\n     (i)

for word in seg_list_exact:     # 设置停用词并去除单个词     if word not in stop_words and len(word) > 1:         result_list.append(word)         print(result_list)

3、stylecloud库

   stylecloud基于wordcloud库。

   该库的特点有:

   支持词云图图标形状设置,    可读取csv文件,.txt文件等    可调色    ...

   stylecloud库,可以使用_stylecloud.gen_stylecloud()_ 方法来生成词云图,通过传递相应的文本 .txt 文件的路径和生成词云的图标样式即可。

(1)、几行代码简单词云

   我们可以通过几行代码生成一个还算不错的词云。每次生成的词云颜色和效果都不同。大家可以多保存几个来挑选。

完整python代码:

import stylecloud
from PIL import Image
text1="逆境清醒、Adversity Awake、、逆境清醒的博客_CSDN博客、python教程、前端特效实例、python turtle绘图、、源码、python、python、前端技术、tomcat、、python、python、前端技术、tomcat、、python、python、前端技术、tomcat、"
stylecloud.gen_stylecloud(
text=text1,
background_color='black',
font_path="",
output_name =  ''

   运行效果: 

(2)、图标形状词云图

   完整python代码:

import stylecloud

stylecloud.gen_stylecloud(file_path='股票基本知识1.txt',
                          icon_name='fas fa-dog',
                          palette='colorbrewer.diverging.Spectral_11',
                          font_path="",
                          background_color='black',
                          output_name='')

   运行效果: 

      同一段代码,只要更换图标形状代码,即可显示出不同形状效果的词云。

      icon_name参数的模板【fas fa-iconname】只需要改动iconname即可。

      iconname并不是随便起的,必须能在 搜到才可以。

      运行效果如下图:

   (3)、stylecloud库参数说明

(4)、调色板库

   Palettable(以前称为brewer2mpl)是Python的调色板库。 它是用纯Python编写的,没有依赖关系, 但它可以为 Matplotlib 提供彩色地图。 您可以使用Palettable自定义matplotlib图或 为 Web 应用程序提供颜色。

调色板库调用方式:

palette='colorbrewer.diverging.Spectral_11'

palette='colorbrewer.qualitative.Dark2_7' palette='cartocolors.qualitative.Bold_5' palette='colorbrewer.qualitative.Set1_8'

(5)、图标形状名字索引表

      同一段代码,只要更换图标形状代码,即可显示出不同形状效果的词云。

      icon_name参数的模板【fas fa-iconname】只需要改动iconname即可。

四、总结

        本文通过多个实例和完整python代码,举例说明了python环境下如何制作有自己特色的词云的方法。 wordcloud 和stylecloud这两种主流的python 词云库,结合jieba中文分词和 numpy、pillow、matplotlib能够满足大多数词云制作的需求。做出有特色的词云需要多练习。

        还有一些在线制作词云的网站,资料待更新。

          推荐阅读:

计算机视觉__基本图像操作(显示、读取、保存)直方图(颜色直方图、灰度直方图)直方图均衡化(调节图像亮度、对比度)

 语音识别实战(python代码)(一)

 人工智能基础篇

 计算机视觉基础__图像特征

 matplotlib 自带绘图样式效果展示速查(28种,全)

实例详解___旋转的精灵女孩(附完整代码和资源)(一)

​立体多层玫瑰绘图源码__玫瑰花python 绘图源码集锦

 Python 3D可视化(一)

 让你的作品更出色——词云Word Cloud的制作方法(基于python,WordCloud,stylecloud)

 python Format()函数的用法___实例详解(一)(全,例多)___各种格式化替换,format对齐打印

 用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心)

python爱心源代码集锦(18款)

 Python中Print()函数的用法___实例详解(全,例多)

 Python函数方法实例详解全集(更新中...)

 《 Python List 列表全实例详解系列(一)》__系列总目录、列表概念

​用代码过中秋,python海龟月饼你要不要尝一口?

 python练习题目录

​草莓熊python turtle绘图(风车版)附源代码

 ​草莓熊python turtle绘图代码(玫瑰花版)附源代码

 ​草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码

 巴斯光年python turtle绘图__附源代码

皮卡丘python turtle海龟绘图(电力球版)附源代码

​vue3 项目搭建教程(基于create-vue,vite,Vite + Vue)

​2023年春节祝福第二弹——送你一只守护兔,让它温暖每一个你【html5 css3】画会动的小兔子,炫酷充电,字体特

 别具一格,原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)表白爱心代码(4套)

SVG实例详解系列(一)(svg概述、位图和矢量图区别(图解)、SVG应用实例)

​【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)HTML+CSS+svg绘制精美彩色闪灯圣诞树,HTML+CSS+Js实时新年时间倒数倒计时(附源代码)

 2023春节祝福系列第一弹(上)(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源GPT改写下载)

  (v19.1.0npm 8.19.3) 安装配置教程(超详细)

 色彩颜色对照表(一)(16进制、RGB、CMYK、HSV、中英文名)

2023年4月多家权威机构____编程语言排行榜__薪酬状况

 手机屏幕坏了____怎么把里面的资料导出(18种方法)

【CSDN云IDE】个人使用体验和建议(含超详细操作教程)(python、webGL方向)

 查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决

 tomcat11、tomcat10 安装配置(Windows环境)(详细图文)

 Tomcat端口配置(详细)

 Tomcat 启动闪退问题解决集(八大类详细)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值