六、数据可视化—Wordcloud词云(爬虫及数据可视化)

news2024/12/28 6:02:44

六、数据可视化—Wordcloud词云(爬虫及数据可视化)

也是一个应用程序
http://amueller.github.io/word_cloud/

Wordcloud词云,在一些知乎,论坛等有这样一些东西,要么做封面,要么做讲解,进行分析,看起来有极客风的

分享一些可用于的词云的图标如下
https://blog.csdn.net/zhuxiao5/article/details/107096681
https://fontawesome.dashgame.com/

有遮罩的词云,可以通过文字与轮廓合成一个有图像的词云,也可以根据图片自身的私彩,生成词云的

还可以使用图标穿插

使用定制颜色

可以使用中文,形成分布

自己精简,通过图片的遮罩,形成自己词云的效果

需要安装jieba库,当使用中文的时候,中文分词工具
matplotlib库
Wordcloud 库可能装不上,安装失败,使用另外的方法进行安装,离线安装

使用校园网,发现可以安装Wordcloud,若安不上,可以使用离线模式
先升级pip 再离线安装

http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud
在下方的连接上,有非常多的关于python的扩展包
http://www.lfd.uci.edu/~gohlke/pythonlibs/

在这里插入图片描述

至此Wordcloud安装完成后

#-*- codeing = utf-8 -*- 
#@Time : 2020/11/27 14:17
#@Author : 招财进宝
#@File : testCloud.py
#@Software: PyCharm

import  jieba                               #分词(将一个句子分成很多个词语)
from matplotlib import pyplot as plt        #绘图,数据可视化,点状图、柱状图等科学绘图,和echarts不同,不是直接用于网站,而是生成图片
from wordcloud import WordCloud             #词云,形成有遮罩效果的
from PIL import Image               #用来做图像处理的(官方默认)
import numpy as np                  #矩阵运算
import sqlite3                      #数据库

#准备词云所需的文字(值准备了字)
#先有词,即从数据库中得到词
con = sqlite3.connect('movie.db')
cur = con.cursor()
#看要做那个词云,字太多,估计也显示不出来多少
sql = 'select instroduction from movie250'          #注意拼写是否有误
data = cur.execute(sql)
text = ''
for item in data:
    text = text +item[0]       #此处是将其连接成一个字符串
    #print(item[0])
#print(text)                    #此处是一个字符串了

希望让人自由风华绝代一部美国近现代史怪蜀黍和小萝莉不得不说的故事失去的才是永恒的 最美的谎言最好的宫崎骏,最好的久石让 拯救一个人,就是拯救整个世界诺兰给了我们一场无法盗取的梦永远都不能忘记你所爱的人每个人都要走一条自己坚定了的路,就算是粉身碎骨 爱是一种力量,让我们超越时空感知它的存在如果再也不能见到你,祝你早安,午安,晚安英俊版憨豆,高情商版谢耳朵小瓦力,大人生天籁

#关闭
cur.close()
con.close()

#词云是按照词来进行统计的,这个使用jieba自动进行词频统计
cut = jieba.cut(text)   #将一个字符串进行分割
#print(cut)              #返回cut是一个对象<generator object Tokenizer.cut at 0x000002644AAECF48>
#' '.join(cut)  以指定字符串空格‘ ’作为分隔符,将 cut 中所有的元素(的字符串表示)合并为一个新的字符串
string = ' '.join(cut)         #此处将其对象cut变成字符串,可在下方显示
print(string)                   #此时可以打印如下

希望 让 人 自由 风华绝代 一部 美国 近现代史 怪 蜀黍 和 小萝莉 不得不 说 的 故事 失去 的 才 是 永恒 的 最美 的 谎言 最好 的 宫崎骏 , 最好 的 久 石 让 拯救 一个 人 , 就是 拯救 整个 世界 诺兰 给 了 我们 一场 无法 盗取 的 梦 永远 都 不能 …

#可以自己找图建议轮廓清晰,后面要是白色背景

在这里插入图片描述
在这里插入图片描述

img = Image.open(r'.\static\assets\img\tree.jpg')   #打开遮罩图片
img_arry = np.array(img)        #将图片转换为数组,有了数组即可做词云的封装了
wc = WordCloud(
    background_color='white',   #背景必须是白色
    mask = img_arry,            #传入遮罩的图片,必须是数组
    font_path = "STXINGKA.TTF"  #设置字体,(字体如何找,可以在C:/windows/Fonts中找到名字)
)
#
wc.generate_from_text(string)         #从哪个文本生成wc,这个文本必须是切好的词

在这里插入图片描述

注意要使用中文的字体,否则下方显示图片上,会显示不出中文

#绘制图片
fig = plt.figure(1)             #1表示第一个位置绘制
plt.imshow(wc)                  #按照wc词云的规格显示
plt.axis('off')                 #是否显示坐标轴,不显示(单一图片)
plt.show()			#显示生成的词云图片

显示结果如下
在这里插入图片描述

#plt.show()                      #显示生成的词云图片(在保存的时候,此处要注释)
plt.savefig(r'.\static\assets\img\treeWord.jpg',dpi=500)      #输出词云图片到文件,默认清晰度是400,这里设置500可能有点高

保存的图片如下:
在这里插入图片描述

所有的源代码如下

#-*- codeing = utf-8 -*- 
#@Time : 2020/11/27 14:17
#@Author : 招财进宝
#@File : testCloud.py
#@Software: PyCharm

import  jieba                               #分词(将一个句子分成很多个词语)
from matplotlib import pyplot as plt        #绘图,数据可视化,点状图、柱状图等科学绘图,和echarts不同,不是直接用于网站,而是生成图片
from wordcloud import WordCloud             #词云,形成有遮罩效果的
from PIL import Image               #用来做图像处理的(官方默认)
import numpy as np                  #矩阵运算
import sqlite3                      #数据库

#准备词云所需的文字(值准备了字)
#先有词,即从数据库中得到词
con = sqlite3.connect('movie.db')
cur = con.cursor()
#看要做那个词云,字太多,估计也显示不出来多少
sql = 'select instroduction from movie250'          #注意拼写是否有误
data = cur.execute(sql)
text = ''
for item in data:
    text = text +item[0]       #此处是将其连接成一个字符串
    #print(item[0])
#print(text)                    #此处是一个字符串了
#关闭
cur.close()
con.close()


#分词
#词云是按照词来进行统计的,这个使用jieba自动进行词频统计
cut = jieba.cut(text)   #将一个字符串进行分割
#print(cut)              #返回cut是一个对象<generator object Tokenizer.cut at 0x000002644AAECF48>
string = ' '.join(cut)         #此处将其对象cut变成字符串,可在下方显示,#' '.join(cut)  以指定字符串空格‘ ’作为分隔符,将 cut 中所有的元素(的字符串表示)合并为一个新的字符串
#print(string)                   #此时可以打印如下
print(len(string))              #5589个词,要对这些词进行统计


#可以自己找图建议轮廓清晰
img = Image.open(r'.\static\assets\img\tree.jpg')   #打开遮罩图片
img_arry = np.array(img)        #将图片转换为数组,有了数组即可做词云的封装了
wc = WordCloud(
    background_color='white',   #背景必须是白色
    mask = img_arry,            #传入遮罩的图片,必须是数组
    font_path = "STXINGKA.TTF"  #设置字体,(字体如何找,可以在C:/windows/Fonts中找到名字)
)
#
wc.generate_from_text(string)         #从哪个文本生成wc,这个文本必须是切好的词

#绘制图片
fig = plt.figure(1)             #1表示第一个位置绘制
plt.imshow(wc)                  #按照wc词云的规格显示
plt.axis('off')                 #是否显示坐标轴,不显示(单一图片)
#plt.show()                      #显示生成的词云图片
plt.savefig(r'.\static\assets\img\treeWord.jpg',dpi=400)      #输出词云图片到文件,默认清晰度是400,这里设置500可能有点高

有关WordCloud的配置如下,具体可以看相关课件

WordCloud个参数的含义: 
font_path : string #字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path 
= '黑体.ttf' 
width : int (default=400) #输出的画布宽度,默认为400像素 
height : int (default=200) #输出的画布高度,默认为200像素 
prefer_horizontal : flfloat (default=0.90) #词语水平方向排版出现的频率,默认 0.9 (所以词语垂 
直方向排版出现频率为 0.1 ) 
mask : nd-array or None (default=None) #如果参数为空,则使用二维遮罩绘制词云。如果 
mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取代。除全白(#FFFFFF)的部分将不会 
绘制,其余部分会用于绘制词云。如:bg_pic = imread('读取一张图片.png'),背景图片的画布一 
定要设置为白色(#FFFFFF),然后显示的形状为不是白色的其他颜色。可以用ps工具将自己要 
显示的形状复制到一个纯白色的画布上再保存,就ok了。 
scale : flfloat (default=1) #按照比例进行放大画布,如设置为1.5,则长和宽都是原来画布的1.5倍 
min_font_size : int (default=4) #显示的最小的字体大小 
font_step : int (default=1) #字体步长,如果步长大于1,会加快运算但是可能导致结果出现较大 
的误差 
max_words : number (default=200) #要显示的词的最大个数 
stopwords : set of strings or None #设置需要屏蔽的词,如果为空,则使用内置的STOPWORDS 
background_color : color value (default=”black”) #背景颜色,如background_color='white',背 
景颜色为白色 
max_font_size : int or None (default=None) #显示的最大的字体大小 
mode : string (default=”RGB”) #当参数为“RGBA”并且background_color不为空时,背景为透明 
relative_scaling : flfloat (default=.5) #词频和字体大小的关联性 
color_func : callable, default=None #生成新颜色的函数,如果为空,则使用 self.color_func 
regexp : string or None (optional) #使用正则表达式分隔输入的文本 
collocations : bool, default=True #是否包括两个词的搭配 
colormap : string or matplotlib colormap, default=”viridis” #给每个单词随机分配颜色,若指定 
color_func,则忽略该方法 
random_state : int or None #为每个单词返回一个PIL颜色 
fig = plt.figure(1) #新建一个名叫 Figure1的画图窗口 
plt.imshow(wc) #显示图片,同时也显示其格式 
plt.axis('off') # 是否显示x轴、y轴下标 
#plt.show() #显示生成合成图片 
plt.savefig(path+'\\new.png',dpi=500) #保存合成图片,dpi是设定分辨率,默认为400
fifit_words(frequencies) #根据词频生成词云 
generate(text) #根据文本生成词云 
generate_from_frequencies(frequencies[, ...]) #根据词频生成词云 
generate_from_text(text) #根据文本生成词云 
process_text(text) #将长文本分词并去除屏蔽词(此处指英语,中文分词还是需要自己用别的库 
先行实现,使用上面的 fifit_words(frequencies) ) 
recolor([random_state, color_func, colormap]) #对现有输出重新着色。重新上色会比重新生成 
整个词云快很多 
to_array() #转化为 numpy array 
to_fifile(fifilename) #输出到文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1907552.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Echarts 实现数据可视化

Echarts 简介 Echarts 是一个开源的、免费的、成熟的、商业级图表可视化框架&#xff0c;是 Apache 开源社区的顶级项目之一&#xff0c;也是国内使用最多和最为广泛的可视化图表框架之一。 数据可视化图表框架并没有一个统一的行业标准&#xff0c;比较常见的有 D3、Highchart…

电子设备常用的胶水有哪些?

目录 1、502胶水 2、703胶水 3、704胶水 4、AB胶 5、红胶 6、Underfill 7、导电胶 8、UV胶 9、热熔胶 10、环氧树脂胶 11、硅酮胶 12、聚氨酯胶 13、丙烯酸胶 14、丁基胶 1、502胶水 502胶水&#xff0c;也被称为瞬间胶或快干胶&#xff0c;是一种非常常见的粘合…

如何下载Github上项目中的一个目录或几个文件

目录 问题的由来 GitZip for Github插件 Edge中插件的安装 Chome中插件的安装 插件的使用 Github授权 文件下载 问题的由来 经常使用Github的可能都会有这样的需求&#xff0c;有的时候一个仓库好几个GB&#xff0c;但是感兴趣的只是某个目录下的文件。Git没有单独下载…

CTFShow的RE题(四)

真的是签到 给的是无后缀的 zip 文件&#xff0c;解压发现需要密码&#xff0c;也没有提示&#xff0c;猜测可能是 zip 伪加密 &#xff08;走错厂了吧&#xff09; zip是否加密 首先就是看开头的6 &#xff0c;7byte&#xff0c;和中间 01 02 后的 5 &#xff0c;6byte 成功解…

如何做一个透明度渐现且向上位移逐行出现的文字效果

前言 在这个夜黑风高的夜晚&#xff0c;你的眼睛已经开始有些疲惫。你的手指在键盘上轻轻地敲击着&#xff0c;仿佛在弹奏一首无声的夜曲。你的思绪在代码的海洋中飘荡&#xff0c;寻找着最后一行需要完成的代码。就在这时&#xff0c;你的老板走了过来&#xff0c;他的脸上带…

简过网:事业单位编制有哪几种类型,你都知道吗?

近几年来&#xff0c;随着考编、考公热&#xff0c;越来越多的朋友都有考编的想法&#xff0c;尤其是刚毕业的大学生&#xff0c;但是很多朋友对于事业单位编制有不清楚的地方&#xff0c;比如到底哪些属于事业单位的范围&#xff0c;事业单位编制分为哪些类型&#xff1f;今天…

解决:Android Studio 突然打不开!提示Failed to create JVM:error code -1

Android studio1.5 一直用得好好的&#xff0c;突然有一天打不开&#xff0c;并提示&#xff1a; 可是系统配置中&#xff0c;java的配置也是正常的。 解决方法&#xff1a; 修改安装目录下的studio64.exe.vmoptions 文件 直接将文件内容改成&#xff1a; -Xms128m -Xmx512m…

【活动行】参与上海两场线下活动,教育生态行业赛总决赛活动和WAIC人工智能大会活动 - 上海活动总结

目录 背景决赛最后一公里领域范围 决赛作品AI智教相机辅导老师Copilot辅导老师Copilot雅思写作竞技场 优秀作品总结 背景 决赛 百度发起的千帆杯教育生态行业赛于2024年7月4日进行线下决赛&#xff0c;博主虽然没能进入决赛&#xff0c;但也非常荣幸能够以嘉宾身份到现场给进…

213.贪心算法:跳跃游戏||(力扣)

class Solution { public:int jump(vector<int>& nums) {if (nums.size() 1) return 0; // 如果数组长度为1&#xff0c;已经在终点&#xff0c;不需要跳跃int cur 0; // 当前跳跃能到达的最远位置int flag 0; // 记录跳跃次数int next 0; // 下一次跳跃能到…

软件设计之Java入门视频(13)

软件设计之Java入门视频(13) 视频教程来自B站尚硅谷&#xff1a; 尚硅谷Java入门视频教程&#xff0c;宋红康java基础视频 相关文件资料&#xff08;百度网盘&#xff09; 提取密码&#xff1a;8op3 idea 下载可以关注 软件管家 公众号 学习内容&#xff1a; 该视频共分为1-7…

2024年【低压电工】考试题库及低压电工考试总结

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年低压电工考试题库为正在备考低压电工操作证的学员准备的理论考试专题&#xff0c;每个月更新的低压电工考试总结祝您顺利通过低压电工考试。 1、【单选题】PE线或PEN线上除工作接地外其他接地点的再次接地称为(…

通过Vxlan实现数据中心互联有感

随着企业的发展&#xff0c;为满足跨地域运营、用户接入、异地灾备等场景&#xff0c;越来越多的企业通常在多地域部署多个数据中心。 数据中心互联DCl(Data Center Interconnection)是不同数据中心VM之间互相通信的一种解决方案使用VXLAN、BGP EVPN等技术&#xff0c;使数据中…

RoPE 旋转位置编码,详细解释(下)NLP 面试的女生彻底说明白了

RoPE 旋转位置编码&#xff0c;详细解释&#xff08;下&#xff09;NLP 面试的女生彻底说明白了 原创 看图学 看图学 2024年07月01日 07:55 北京 书接上文&#xff0c;上文见&#xff1a;这么解释 RoPE 旋转位置编码&#xff0c;女朋友睁大了双眼&#xff08;上&#xff09; …

12种增强Python代码的函数式编程技术

前言 什么是函数式编程&#xff1f; 一句话总结&#xff1a;函数式编程(functional programming)是一种编程范式&#xff0c;之外还有面向对象&#xff08;OOP&#xff09;、面向过程、逻辑式编程等。 函数式编程是一种高度抽象的编程范式&#xff0c;它倡导使用纯函数&#x…

【计算机网络】物理层(作业)

1、若信道在无噪声情况下的极限数据传输速率不小于信噪比为30dB 条件下的极限数据传输速率&#xff0c;则信号状态数至少是&#xff08;D&#xff09;。 A. 4B. 16C. 8D. 32 解析&#xff1a;可用奈奎斯特采样定理计算无噪声情况下的极限数据传输速率&#xff0c;用香农第二定…

Aqara 发布多款智能照明新品,引领空间智能新时代

7月8日&#xff0c;全球 IoT 独角兽品牌 Aqara 以“光&#xff0c;重塑空间想象”为主题&#xff0c;举办了线上智能照明新品沟通会。 会上&#xff0c;Aqara 正式发布一系列引领行业的智能照明新品&#xff0c;包括银河系列轨道灯 V1 以及繁星系列妙控旋钮 V1 等&#xff0c;…

Leetcode—97. 交错字符串【中等】

2024每日刷题&#xff08;140&#xff09; Leetcode—97. 交错字符串 2d动规实现代码 class Solution { public:bool isInterleave(string s1, string s2, string s3) {int m s1.length();int n s2.length();int len s3.length();if(m n ! len) {return false;}vector<…

metersphere链接腾讯邮箱步骤

1、打开腾讯邮箱生成授权码 路径&#xff1a;设置-账户-账户安全 生成的授权码只会展示1次&#xff0c;注意保存 2、在系统设置-系统参数设置-邮件设置填写授权码和SMTP信息 SMTP信息在邮箱的客户端设置中可以获取到对应的信息 3、信息填写完后&#xff0c;可以测试连接&…

XDMA原理学习(1)——DMA技术详解

目录 一、什么是DMA&#xff1f;为什么需要DMA&#xff1f; 二、DMA分类 2.1 Block DMA 2.2 Scatter-Gather DMA 2.3 Ring buffer DMA 三、实际案例 3.1 STM32微处理器 3.1.1 Block DMA 3.1.2 Scatter-Gather DMA 3.1.3 使用场景举例&#xff1a; 3.1.4 配置与实现 …

Vue框架引入

vue简介 1.1.vue是什么?Vue官网 英文官网: https://vuejs.org/中文官网: https://cn.vuejs.org/ vue是一套构建用户界面的渐进式javascript框架 构建用户界面:将我们手里拿到的数据通过某种办法变成用户可以看见的界面前端工程师的职责:就是在合适的时候发出合适的请求,然后…