六、數據可視化—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: PyCharmimport  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: PyCharmimport  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.pswp.cn/web/42217.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42217.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42217.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ | Leetcode C++題解之第223題矩形面積

題目&#xff1a; 題解&#xff1a; class Solution { public:int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int area1 (ax2 - ax1) * (ay2 - ay1), area2 (bx2 - bx1) * (by2 - by1);int overlapWidth min(ax2, bx2) - max…

實戰Qt開發WordBN筆記軟件#01 搭建開發環境:VS2019+Qt6.5+CMake+Git

01 背景 【WordBN字遠筆記】是天恩軟件工作室開發的一款免費筆記軟件&#xff1b;WordBN基于VS2019、Qt6.5開發&#xff0c;使用Qt Quick&#xff08;QML&#xff09;開發語言。 本課程將以【WordBN字遠筆記】的界面為實戰基礎&#xff0c;詳細介紹如何基于Qt/QML開發語言&am…

WPF 表格控件斑馬線使用

這里用ListView為案例。 如圖效果&#xff1a; 主要思路&#xff1a; 用AlternationCount屬性來設置需要使用斑馬線的條數&#xff0c;就是說幾行一換色&#xff0c;也可以理解為需要幾種顏色&#xff0c; 然后再樣式模板中&#xff0c;寫觸發器屬性ItemsControl.Alternatio…

python深拷貝和淺拷貝之間的區別是什么?

在Python中&#xff0c;深拷貝和淺拷貝是兩種不同的對象復制機制&#xff0c;它們在復制對象時的行為有顯著差異&#xff1a; 1. 淺拷貝&#xff08;Shallow Copy&#xff09;: - 淺拷貝創建一個新對象&#xff0c;但它只是復制了原始對象中元素的引用&#xff08;對于可變…

明明已經安裝了python中的某個庫,但是還是報錯ModuleNotFoundError: No module named ‘sklearn‘

問題&#xff1a; 明明已經安裝了python中的某個庫&#xff0c;但是還是報錯ModuleNotFoundError: No module named sklearn 解決方法&#xff1a; 卸載重新安裝一下即可 pip uninstall scikit-learn pip install scikit-learn 成功解決&#xff01;&#xff01;&#xff…

《Windows API每日一練》9.1 資源-圖標

本節講述圖標、鼠標指針位圖、字符串資源表、自定義資源的添加和應用。 本節必須掌握的知識點&#xff1a; 圖標 第56練&#xff1a;ICON圖標資源 鼠標指針位圖 字符串資源表 自定義資源 第57練&#xff1a;字符串資源表和自定義資源 9.1.1 圖標 在 Windows 窗口編程中&…

知識付費系統3.0整站源碼知識付費網課平臺網創資源付費帶自動采集同步插件

程序說明&#xff1a; 1.修復更新到最新版本 2.自動采集插件重寫 3.關閉采集授權域名直接對接 4.更新插件主動請求同步資源 5.帶自動采集插件 原始功能 支持分類替換 將主站同步過來的文章分類進行替換 支持自定義文章作者&#xff08;選擇多個作者則同步到的文章作者將會隨機分…

java中==和equals()的區別探究

目錄 一、Object對象 二、 三、String類的equals()方法 四、示例 4.1直接定義兩個相同的值比較 4.2直接定義兩個值不同的字符串進行比較 4.3直接定義一個字符串和new一個字符串進行比較&#xff08;兩者值相同&#xff09; 4.4直接定義一個字符串和new一個字符串進行…

Halcon Ean13 一維碼讀取

一 EAN碼介紹 1 EAN碼定義: EAN碼是國際物品編碼協會制定的一種商品用條碼&#xff0c;通用于全世界。EAN碼符號有標準版&#xff08;EAN-13&#xff09;和縮短版&#xff08;EAN-8&#xff09;兩種。標準版表示13位數字&#xff0c;又稱為EAN13碼&#xff0c;縮短版表示8位數…

VScode免密鏈接ubuntu

Ubuntu 下載&#xff1a; sudo apt-get install openssh-serverps -e | grep sshd參考IP &#xff1a; ifconfig VScode配置 重新嘗試連接&#xff0c;輸入的密碼是虛擬機用戶密碼 免密鏈接 Windows生成公鑰 1、打開CMD 2、輸入命令ssh-keygen 3、連續回車確認即可生成 …

正態、威布爾、指數分布、伽馬分布、對數正態分布介紹

目錄 正態、威布爾、指數分布、3.1 概念介紹概率密度函數&#xff08;PDF&#xff09;累積分布函數&#xff08;CDF&#xff09;性質應用 3.2 參數及繪圖參數概率密度函數&#xff08;PDF&#xff09;累積分布函數&#xff08;CDF&#xff09;繪圖圖像解讀 3.3 指數分布擬合代碼…

Emacs有什么優點,用Emacs寫程序比IDE更方便嗎?

Emacs 是一款歷史悠久且功能強大的文本編輯器&#xff0c;它以其高度的可定制性和豐富的功能而聞名。在討論 Emacs 的優點以及它是否比 IDE 更方便時&#xff0c;我們需要從多個角度進行深入分析。以下是對 Emacs 優點的詳細闡述&#xff0c;以及它與 IDE 的比較。 Emacs 的優…

第11章 規劃過程組(二)(11.10制訂進度計劃)

第11章 規劃過程組&#xff08;二&#xff09;11.10制訂進度計劃&#xff0c;在第三版教材第395~397頁&#xff1b;文字圖片音頻方式 第一個知識點&#xff1a;定義及作用 分析活動順序、持續時間、資源需求和進度制約因素&#xff0c;創建項目進度模型&#xff0c;從而落實項目…

Docker定時清理

一、循環調度執行 1、檢查cron狀態 systemctl status crond 2、創建要執行的shell腳本 vim /home/cleanup_docker.sh #! /bin/bash # 清理臨時文件 echo $(date "%H:%M:%S") "執行docker清理命令..." docker system prune -af-a 清理包括未使用的鏡像 …

Android EditText+ListPopupWindow實現可編輯的下拉列表

Android EditTextListPopupWindow實現可編輯的下拉列表 &#x1f4d6;1. 可編輯的下拉列表?步驟一&#xff1a;準備視圖?步驟二&#xff1a;封裝顯示方法?步驟三&#xff1a;獲取視圖并監聽 &#x1f4d6;2. 擴展上下箭頭?步驟一&#xff1a;準備上下箭頭icon圖標?步驟二&…

Redisson分布式鎖、可重入鎖

介紹Redisson 什么是 Redisson&#xff1f;來自于官網上的描述內容如下&#xff01; Redisson 是一個在 Redis 的基礎上實現的 Java 駐內存數據網格客戶端&#xff08;In-Memory Data Grid&#xff09;。它不僅提供了一系列的 redis 常用數據結構命令服務&#xff0c;還提供了…

力扣56.合并區間

力扣56.合并區間 按左端點排序 判斷左端點是否小于等于當前右端點**&#xff08;可以合并&#xff09;** class Solution {public:vector<vector<int>> merge(vector<vector<int>>& intervals) {ranges::sort(intervals);vector<vector<i…

北森銳途人才競聘盤點管理測評:高管領導力六大評判標準深度解析萬達商管中國綠發等

北森銳途人才管理測評&#xff1a;高管領導力評判標準深度解析 在企業高管的盤點與競聘測評領域&#xff0c;眾多管理人才面臨評估自身領導力的挑戰。面對能力卓越、職級顯赫的同僚&#xff0c;許多管理者感到缺乏一套權威且專業的評價體系。然而&#xff0c;無論是天賦異稟的領…

vue+cesium之加載天地圖影像底圖與注記

目錄 1.創建地圖容器2.疊加天地圖影像底圖與矢量注記 關鍵代碼3.示例效果圖 Cesium是默認加載了微軟公司的Bing地圖&#xff0c;并提供了BingMapslmageryProvider類來加載Bing地圖。也就是說&#xff0c;在創建Viewer時&#xff0c;如果不指定lmageryProvider類就默認加載Bing地…

一體化預制泵站如何選擇廠家及設備選型

諸城市鑫淼環保小編帶大家了解一下一體化預制泵站如何選擇廠家及設備選型 一體化預制泵站是由玻璃鋼筒體、格柵系統、水泵、內部管道、閥門、液位控制儀、進出水管道、檢修平臺、照明系統、不銹鋼爬梯等組成。該設備的型號是多種多樣的&#xff0c;設備的型號不同&#xff0c;其…