Python 生成詞雲圖(十八)
阿新 • • 發佈:2018-12-22
(一)下載第三方模組
1.wordcloud:它把我們帶權重的關鍵詞渲染成詞雲。
2.jieba:是一個分詞模組,因為我是從一個txt文本里提取關鍵詞,所以需要 jieba 來分詞並統計詞頻。如果是已經有了現成的資料,不再需要它。
pip install wordcloud
pip install jieba
3.如果pip install wordcloud按裝失敗!請複製報錯的連結,下載Visual C++2015,安裝完畢再使用pip install wordcloud就可以了。
4.生產中文詞雲包錯的解決方法:
從你電腦檔案管理系統引入一個支援中文的檔案即可!
選擇的檔案路徑:C :/Windows/Fonts/simfang.ttf
(二)WordCloud類的使用
WordCloud構造方法的引數 | 說明 |
---|---|
font_path | 字型路徑,需要展現什麼字型就把該字型路徑+字尾名寫上,如:font_path = ‘黑體.ttf’ |
width | 輸出的畫布寬度,預設為400畫素 |
height | 輸出的畫布高度,預設為200畫素 |
prefer_horizontal | 詞語水平方向排版出現的頻率,預設 0.9 (所以詞語垂直方向排版出現頻率為 0.1 ) |
mask | 如果引數為空,則使用二維遮罩繪製詞雲。如果 mask 非空,設定的寬高值將被忽略,遮罩形狀被 mask 取代。除全白(#FFFFFF)的部分將不會繪製,其餘部分會用於繪製詞雲。如:bg_pic = imread(‘讀取一張圖片.png’),背景圖片的畫布一定要設定為白色(#FFFFFF),然後顯示的形狀為不是白色的其他顏色。可以用ps工具將自己要顯示的形狀複製到一個純白色的畫布上再儲存。 |
scale | 按照比例進行放大畫布,如設定為1.5,則長和寬都是原來畫布的1.5倍。 |
min_font_size | 顯示的最小的字型大小 |
font_step | 字型步長,如果步長大於1,會加快運算但是可能導致結果出現較大的誤差。 |
max_words | 顯示的詞的最大個數 |
stopwords | 設定需要遮蔽的詞,如果為空,則使用內建的STOPWORDS |
background_color | 背景顏色,如background_color=’white’,背景顏色為白色。 |
max_font_size | 顯示的最大的字型大小 |
mode | 當引數為“RGBA”並且background_color不為空時,背景為透明。 |
relative_scaling | 詞頻和字型大小的關聯性 |
color_func | 生成新顏色的函式,如果為空,則使用 self.color_func |
regexp | 使用正則表示式分隔輸入的文字 |
collocations | 是否包括兩個詞的搭配 |
colormap | 給每個單詞隨機分配顏色,若指定color_func,則忽略該方法。 |
例項演示01
專案結構:
from wordcloud import WordCloud
with open("test.txt" ,encoding="utf-8")as file:
#1.讀取文字內容
text=file.read()
#2.設定詞雲的背景顏色、寬高、字數
wordcloud=WordCloud(font_path="C:/Windows/Fonts/simfang.ttf",
background_color="black",width=600,
height=300,max_words=50).generate(text)
#3.生成圖片
image=wordcloud.to_image()
#4.顯示圖片
image.show()
結果顯示:
例項演示02
from wordcloud import WordCloud
import jieba
#1.將字串切分為單個字元
def chinese_jieba(text):
wordlist_jieba=jieba.cut(text)
space_wordlist=''.join(wordlist_jieba)
return space_wordlist
with open("test.txt" ,encoding="utf-8")as file:
text=file.read()
text=chinese_jieba(text)
wordcloud = WordCloud(font_path="C:/Windows/Fonts/simfang.ttf",
background_color="black", width=600,
height=300, max_words=50,min_font_size=8).generate(text)
image=wordcloud.to_image()
image.show()
結果顯示:
例項演示03
下載一張圖片作為模板,並在該模板內填寫文字。
from wordcloud import WordCloud
import jieba
import numpy
import PIL.Image as Image
#1.將字串切分
def chinese_jieba(text):
wordlist_jieba=jieba.cut(text)
space_wordlist=" ".join(wordlist_jieba)
return space_wordlist
with open("test.txt" ,encoding="utf-8")as file:
text=file.read()
text=chinese_jieba(text)
#2.圖片遮罩層
mask_pic=numpy.array(Image.open("china.jpg"))
#3.將引數mask設值為:mask_pic
wordcloud = WordCloud(font_path="C:/Windows/Fonts/simfang.ttf",mask=mask_pic).generate(text)
image=wordcloud.to_image()
image.show()
結果顯示: