天天看點

python:wordcloud詞雲一、基本使用二、按圖檔形狀生成三、WordCloud參數詳解

一、基本使用

import jieba
import wordcloud
txt = open("1.txt", "r", encoding='utf-8').read()

words = jieba.lcut(txt)
txt_1 = " ".join(words)
# print(txt1)
w = wordcloud.WordCloud(font_path="msyh.ttc",
                        width=1000, height=700, background_color="white",
                        )
w.generate(txt_1)
w.to_file("ciyun.png")
           

二、按圖檔形狀生成

import jieba
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import numpy as np
from PIL import Image

txt = open("C:/Users/96356/Desktop/1.txt", "r", encoding='utf-8').read()

words = jieba.lcut(txt)
txt_1 = " ".join(words)
photo = np.array(Image.open('C:/Users/96356/Desktop/2.png'))
# from scipy.misc import imread
# china=imread('C:/Users/96356/Desktop/2.png') #scipy.misc方式都可以讀取圖檔

w = WordCloud(font_path="msyh.ttc",
              mask=photo,
              background_color="white",
              )
w.generate(txt_1)
w.to_file("ciyun.png")
           

三、WordCloud參數詳解

from wordcloud import 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工具将自己要顯示的形狀複制到一個純白色的畫布上再儲存,就ok了。一般為mask=np.array(Image.open(‘xxx.jpg’))。其中from PIL import Image
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,則忽略該方法
random_state 為每個單詞傳回一個PIL顔色

其他部分函數

函數 作用
fit_words(frequencies) 根據詞頻生成詞雲
generate(text) 根據文本生成詞雲
generate_from_frequencies(frequencies[, …]) 根據詞頻生成詞雲
generate_from_text(text) 根據文本生成詞雲
process_text(text) 将長文本分詞并去除屏蔽詞(此處指英語,中文分詞還是需要自己用别的庫先行實作,使用上面的 fit_words(frequencies) )
recolor([random_state, color_func, colormap]) 對現有輸出重新着色。重新上色會比重新生成整個詞雲快很多
to_array() 轉化為 numpy array
to_file(filename) 輸出到檔案