1. wordcloud庫簡介
wordcloud是優秀的詞雲展示第三方庫,它能夠將一段文本變成一個詞雲。
詞雲:將詞語通過圖形可視化的方式直觀和藝術的展示出來。
2. wordcloud庫安裝
cmd命令行下:
pip install wordcloud
3. wordcloud庫的基本使用
wordcloud庫把詞雲當作一個WordCloud對象
-
wordcloud.WordCloud()代表一個文本對應的詞雲
-
可以根據文本中詞語出現的頻率等參數繪制詞雲
-
詞雲的繪制形狀、尺寸和顏色都可以設定
wordcloud庫常規方法
wordcloud對具體詞雲的繪制有一個基本的思路,它的思路是用wordcloud中的WordCloud來表名一個詞雲。以WorldCloud對象為基礎。
w = wordcloud.WordCloud()
方法 | 描述 |
---|---|
w.generate(txt) | 向WordCloud對象w中加載文本txt |
w.to_file(filename) | 將詞雲輸出為圖像文件,.png或.jpg格式 |
例如:
>>>w.generate( "Python and WordCloud" )
>>>w.to_file( "outfile.png" )
詞雲繪制步驟:
import wordcloud
c = wordcloud.WordCloud() #步驟1:配置對象參數
c.generate("wordcloud by Python") #步驟2:加載詞雲文本
c.to_file("pywordcloud.png") #步驟3:輸出詞雲文件
從文本生成詞雲,wwordcloud庫做了9件事情:
- ① 分隔:以空格分隔單詞
- ② 統計: 單詞出現次數並過濾。出現次數多的單詞顯示效果就會變的很大,反之就小
- ③ 字體: 根據統計配置字號
- ④ 布局: 顏色環境尺寸
配置對象參數
w = wordcloud.WordCloud(<參數>)
參數 | 描述 |
---|---|
width | 指定詞雲對象生成圖片的寬度,默認400像素 |
height | 指定詞雲對象生成圖片的高度,默認200像素 |
min_font_size | 指定詞雲中字體的最小字號,默認4號 |
max_font_size | 指定詞雲中字體的最大字號,根據高度自動調節 |
font_step | 指定詞雲中字體字號的步進間隔,默認為1 |
font_path | 指定字體文件的路徑,默認None |
max_words | 指定詞雲顯示的最大單詞數量,默認200 |
stop_words | 指定詞雲的排除詞列表,即不顯示的單詞列表 |
mask | 指定詞雲形狀,默認為長方形,需要引用imread()函數 |
background_color | 指定詞雲圖片的背景顏色,默認為黑色 |
例子
>>>w=wordcloud.WordCloud(width=600)
>>>w=wordcloud.WordCloud(height=400)
>>>w=wordcloud.WordCloud(min_font_size=10)
>>>w=wordcloud.WordCloud(max_font_size=20)
>>>w=wordcloud.WordCloud(font_step=2)
>>>w=wordcloud.WordCloud(font_path="msyh.ttc")
>>>w=wordcloud.WordCloud(max_words=20)
>>>w=wordcloud.WordCloud(stop_words={"Python"})
# 指定詞雲形狀
>>>from scipy.misc import imread
>>>mk=imread("pic.png")
>>>w=wordcloud.WordCloud(mask=mk)
# 指定詞雲背景色
>>>w=wordcloud.WordCloud(background_color="white")
注:在將中文構成詞雲的時候,它是用空格來去分隔單詞的,在中文中我們沒有辦法使用空格來區分單詞,所以在用中文形詞雲的時候,首先需要對中文文本進行分詞。中文分詞使用 jieba 庫,關於jieba庫的使用請參考文章:https://www.cnblogs.com/keepcode/p/14436010.html
中文生詞詞雲實例
import jieba
import wordcloud
txt = "程序設計語言是計算機能夠理解和\
識別用戶操作意圖的一種交互體系,它按照\
特定規則組織計算機指令,使計算機能夠自\
動進行各種運算處理。"
w = wordcloud.WordCloud( width=1000,\
font_path = "msyh.ttc",height=700)
w.generate(" ".join(jieba.lcut(txt)))
w.to_file("pywcloud.png")
jieba.lcut(txt)
將 txt 文本分詞並生成一個列表變量,其中過的每一個元素是分隔之后的單詞。我們需要這樣的單詞以文本的形式由空格來分隔組成。
使用 "".join
函數將這樣的列表由空格將各個元素組織起來。
使用w.generate()
加載一段(" ".join(jieba.lcut(txt)))
的內容。
以上內容資料均來源於中國大學MOOC網-北京理工大學Python語言程序設計課程
課程地址:https://www.icourse163.org/course/BIT-268001