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

六、数据可视化—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.mfbz.cn/a/785095.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java并发/多线程CompleteableFuture详解

目录 CompleteableFuture 创建 获得结果的方法 辅助方法 allOf和anyOf的区别 CompletableFuture 里大约有五十种方法&#xff0c;但是可以进行归类: 变换类 thenApply 消费类 thenAccept 执行操作类 thenRun thenApply/thenAccept/thenRun 结合转化类 thenCombine 结…

浅析Nginx技术:开源高性能Web服务器与反向代理

什么是Nginx&#xff1f; Nginx是一款轻量级、高性能的HTTP和反向代理服务器&#xff0c;也可以用作邮件代理服务器。它最初由俄罗斯的程序员Igor Sysoev在2004年开发&#xff0c;并于2004年首次公开发布。Nginx的主要优势在于其非阻塞的事件驱动架构&#xff0c;能够处理大量并…

python-24-零基础自学python while循环+交互+数据的存储

学习内容&#xff1a;《python编程&#xff1a;从入门到实践》第二版 知识点&#xff1a; 文件处理 with open&#xff08;&#xff09;while 练习内容&#xff1a;10章练习题10-3、10-4、10-5 练习10-3&#xff1a;访客 编写一个程序&#xff0c;提示用户输入名字。用户做…

北森锐途人才竞聘盘点管理测评:高管领导力六大评判标准深度解析万达商管中国绿发等

北森锐途人才管理测评&#xff1a;高管领导力评判标准深度解析 在企业高管的盘点与竞聘测评领域&#xff0c;众多管理人才面临评估自身领导力的挑战。面对能力卓越、职级显赫的同僚&#xff0c;许多管理者感到缺乏一套权威且专业的评价体系。然而&#xff0c;无论是天赋异禀的领…

【回溯 - 1】46. 全排列

46. 全排列 难度&#xff1a;中等 力扣地址&#xff1a;https://leetcode.cn/problems/permutations/description/ 问题描述 给定一个 不含重复数字 的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;nu…

ICMP隧道

后台私信找我获取工具 目录 ICMP隧道作用 ICMP隧道转发TCP上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 执行后门木马&#xff0c;本地上线 ICMP隧道转发SOCKS上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 ​执行后…

经常用借呗和花呗对征信有影响吗?

说起支付宝里的花呗和借呗&#xff0c;大伙儿肯定都不陌生&#xff0c;它们俩就像是支付宝里的信用贷款双胞胎&#xff0c;名字相近&#xff0c;性格却大相径庭。现在&#xff0c;这俩兄弟都乖乖地接入了央行的征信大家庭&#xff0c;你的每一次使用&#xff0c;都会被记录得清…

老师怎么快速发布成绩?

期末考试的钟声刚刚敲响&#xff0c;成绩单的发放却成了老师们的一大难题。每当期末成绩揭晓&#xff0c;老师们便要开始一项繁琐的任务——将每一份成绩单逐一私信给家长。这不仅耗费了大量的时间和精力&#xff0c;也让本就忙碌的期末工作变得更加繁重。然而&#xff0c;随着…

生产力工具|Endnote X9如何自动更新文件信息

一、以EndNote X9.2版本为例&#xff0c;打开EndNote文献管理软件。 二、在菜单栏找到“Edit→Preferences...”&#xff0c;点击打开&#xff0c;弹出一个“EndNote Preferences”窗口。 三、进行设置 在打开的窗口左侧选择“PDF Handing”&#xff0c;右边会出现自动导入文献…

SwiftUI知识点(二)

Animation import SwiftUIstruct AnimationBootcamp: View {State var isAnimation: Bool falsevar body: some View {VStack{Button("Button"){withAnimation(Animation.default//重复//autoreverses: true&#xff1a;A-B-A-B//false: A-B&#xff0c;A-B.repeat…

[图解]SysML和EA建模住宅安全系统-13-时间图

1 00:00:00,480 --> 00:00:02,280 首先&#xff0c;我们来看&#xff0c;图画在哪里 2 00:00:02,290 --> 00:00:04,380 这个图 3 00:00:04,390 --> 00:00:06,180 你看&#xff0c;它是描述&#xff0c;刚才讲的 4 00:00:06,190 --> 00:00:09,010 描述这个活动 …

STM32学习历程(day5)

EXTI外部中断 中断 中断就是在主程序运行过程中 出现了特定的中断触发条件&#xff08;中断源&#xff09;&#xff0c;CPU会暂停当前的程序&#xff0c;去处理中断程序 处理完会返回被暂停的位置 继续运行原来的程序。 中断优先级 当有多个中断源同时申请中断时 CPU会根据…

设计模式之职责链模式(Chain of Responsibility Pattern)

1.概念 职责链模式&#xff08;Chain of Responsibility Pattern&#xff09;&#xff1a;避免将请求发送者与接收者耦合在一起&#xff0c;让多个对象都有机会接收请求&#xff0c;将这些对象连接成一条链&#xff0c;并且沿着这条链传递请求&#xff0c;直到有对象处理它为止…

单例模式(大话设计模式)C/C++版本

单例模式 C 饿汉 /* HM hungry man 饿汉 */ #include <iostream> using namespace std; class Singleton { private:Singleton() { cout << "单例对象创建&#xff01;" << endl; };Singleton(const Singleton &);Singleton &operator(c…

【ARMv8/v9 GIC 系列 2.4 -- GIC SGI 和 PPI 中断的启用配置】

请阅读【ARM GICv3/v4 实战学习 】 文章目录 GIC SGI 和 PPI 中断的使能配置GICR_ISENABLER0 操作使用举例SummaryGIC SGI 和 PPI 中断的使能配置 GICR_ISENABLER0寄存器(中断设置-使能寄存器0)用于启用相应的SGI(软件生成中断)或PPI(专用外设中断)向CPU接口的转发。每个…

Android多开应用软件系统设计

设计一个支持Android多开应用的软件系统&#xff0c;主要涉及到以下几个关键技术点和设计考虑&#xff1a; 1. 虚拟化技术 容器技术&#xff1a;与传统的虚拟机不同&#xff0c;可以采用更轻量级的容器技术&#xff0c;为每个应用实例创建独立的运行环境。这包括分配独立的用…

atcoder 357 F Two Sequence Queries (线段树板子)

题目&#xff1a; 分析&#xff1a; 线段树 代码&#xff1a; // Problem: F - Two Sequence Queries // Contest: AtCoder - SuntoryProgrammingContest2024&#xff08;AtCoder Beginner Contest 357&#xff09; // URL: https://atcoder.jp/contests/abc357/tasks/abc357_…

AI实时免费在线图片工具6:以图生相似图

1、以图生图&#xff0c;生成相似图 https://huggingface.co/spaces/diffusers/unofficial-SDXL-Turbo-i2i-t2i 间接实现&#xff1a;可以是图片先提取描述&#xff0c;再通过描述再去生成新图片 https://huggingface.co/spaces/gokaygokay/KolorsPlusPlus

JAVA基础-----128陷阱

一、何为128陷阱 Java中Integer类型在使用比较时的特殊行为------128陷阱&#xff0c;解释了当数值在-128到127范围内&#xff0c;由于valueOf方法的缓存机制导致地址相同&#xff0c;比较为真&#xff1b;超出这个范围则新分配内存&#xff0c;地址不同&#xff0c;比较为假。…

动态数据库设计

动态数据库设计是一种灵活的方法&#xff0c;用于构建能够适应不断变化的数据需求的数据库结构。它强调在不频繁修改数据库表结构的前提下&#xff0c;有效管理和存储多样化的数据。以下是实现动态数据库设计的一些关键技术点和策略&#xff1a; 实体-属性-值&#xff08;EAV&a…