1. 程式人生 > >Python 生成詞雲圖(十八)

Python 生成詞雲圖(十八)

(一)下載第三方模組

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()

結果顯示:
這裡寫圖片描述