如何使用python生成詞云並透明背景的詞云?

2021-10-09 17:30:19 字數 4424 閱讀 6265

環境報錯解決思路

wordcloud方法介紹

wordcloud方法是wordcloud庫中使用頻率最高的為作用最大的方法, 主要用於詞云的生成和繪製。

wordcloud屬性

作用font_path

width

整數型別, 生成詞云的寬度, 預設:400

height

整數型別, 生成詞云的高度, 預設:200

prefer_horizontal

浮點型別,詞語水平方向排版出現的頻率,預設:0.9

mask

遮罩圖, 下方會詳細介紹。預設:無

scale

浮點型別, 按照比例進行放大畫布, 預設:1

min_font_size

整數型別, 顯示的最小的字型大小, 預設:4

max_font_size

整數型別, 顯示的最大的字型大小, 預設:無

margin

整數型別, 邊緣空白寬度, 預設:2

font_step

整數型別, 字型步長, 預設:1

max_words

整數型別,要顯示的詞的最大個數 ,預設:200

background_color

字串型別, 背景顏色,預設:黑色

stopwords

設定需要遮蔽的詞,如果為空,則使用內建的stopwords

relative_scaling

浮點型別,詞頻和字型大小的關聯性,預設:auto。

regexp

字串型別,使用正規表示式分隔輸入的文字

collocations

布林型別, 是否包括兩個詞的搭配

colormap

給每個單詞隨機分配顏色,若指定color_func,則忽略該方法。

normalize_plurals

布林型別,是否刪除單詞中的s,如果使用generate_from_frequencies,則將其忽略。預設:true

contour_width

浮點型別,如果mask遮罩不是none和contour_width > 0,則繪製mask遮罩輪廓。預設:0

contour_color

字串型別, mask遮罩輪廓顏色。預設: black

repeat

布林型別,是否重複單詞和短語,直到達到max_words或min_font_size。預設:false

include_numbers

布林型別,是否將數字包含為短語。預設:false

min_word_length

整數型別,乙個單詞必須包含的最小字母數。預設:0

mode

顏色模式,預設「rgb」。如果想設定透明底色的雲詞圖,那麼可以設定background_color=none, mode=「rgba」

被棄用屬性

ranks_only

wordcloud方法

作用fit_words(frequencies)

根據詞頻生成詞云(frequencies,為字典型別),generate_from_frequencies(frequencies)的簡寫

generate(text)

根據文字生成詞云,generate_from_text(text)的簡寫

generate_from_frequencies(frequencies, max_font_size=none)

根據詞頻生成詞云

generate_from_text(text)

根據文字生成詞云

process_text(text)

將長文字分詞並去除遮蔽詞(此處指英語,中文分詞還是需要自己用別的庫先行實現,使用上面的 fit_words(frequencies) )

recolor([random_state, color_func, …])

對現有輸出重新著色。重新上色會比重新生成整個詞云快很多。

to_array()

轉換為numpy陣列。

to_file(filename)

輸出到檔案(filename為輸出檔名)

to_svg([embed_font, …])

匯出為svg格式。

簡單詞云生成例項

使用上述的方法和屬性我們就可以生成乙個自己的詞云。

'''

'''# 製作詞云使用

from wordcloud import wordcloud

# 中文分詞使用

import jieba

# 獲取製作詞云的文字路徑

path_txt =

'詞云.txt'

# 開啟文字

with

open

(path_txt,

'r', encoding=

'utf-8'

)as f:

# 結巴分詞,生成字串,wordcloud無法直接生成正確的中文詞云

cut_text =

" ".join(jieba.cut(f.read())

)# 設定詞云屬性

wordcloud = wordcloud(

# 設定字型,不然會出現口字亂碼,文字的路徑是電腦的字型一般路徑,可以換成別的

font_path=

,# 設定了背景(當前為透明)

background_color=

none

, mode=

'rgba'

,# 寬

width=

1000

,# 高

height=

880)

# 生成詞云

wordcloud.generate(cut_text)

# 設定詞云儲存路徑

wordcloud.to_file(

"圖云.png"

)

wordcloud從除了wordcloud外,還有

生成自定義樣式和顏色的

使用maks屬性即可幫助我們生成帶蒙版的詞云,但需要注意的是我們不能直接將乙個給maks,否則會報錯attributeerror: 『str』 object has no attribute 'dtype』大致意思就是str(字串)沒有dtype屬性。

這裡我們需要用到matplotlib.pyplot庫中的.imread(』』)屬性。顏色方面我們可以使用recolor進行重新著色,使用imagecolorgenerator讀取背景顏色。

'''

'''# 製作詞云使用

from wordcloud import wordcloud, imagecolorgenerator

# 中文分詞使用

import jieba

# 轉化蒙版

import matplotlib.pyplot as plt

# 獲取製作詞云的文字路徑

path_txt =

'詞云.txt'

# 開啟文字

with

open

(path_txt,

'r', encoding=

'utf-8'

)as f:

# 結巴分詞,生成字串,wordcloud無法直接生成正確的中文詞云

cut_text =

" ".join(jieba.cut(f.read())

)# 設定背景

backgroud_image = plt.imread(

'蒙版圖.jpg'

)# 設定詞云屬性

wordcloud = wordcloud(

# 設定字型,不然會出現口字亂碼,文字的路徑是電腦的字型一般路徑,可以換成別的

font_path=

,# 設定了背景(當前為透明)

background_color=

none

, mode=

'rgba'

,# 寬

width=

1000

,# 高

height=

880,

# 設定背景蒙版

mask=backgroud_image

)# 生成詞云

wordcloud.generate(cut_text)

# 將字型顏色重新著色為背景顏色(recolor方法必須在generate之後執行)

wordcloud.recolor(color_func=imagecolorgenerator(backgroud_image)

)# 設定詞云儲存路徑

wordcloud.to_file(

"圖云.png"

Python如何生成詞云 詳解

效果圖一 效果圖二 對於新人來說安裝wordcloud模組就是一大關,我們一般都是通過pycharm或者pip安裝的,但是在安裝wordcloud時會提示錯誤,如下 執行後會顯示安裝成功 wordcloud的基本方法,看原始碼如下 各個引數大家應該一看就明白,另外wordcloud還有幾個其他方法,...

Python 生成詞云

import matplotlib.pyplot as plt from wordcloud import wordcloud import jieba text from file with apath open python.txt encoding utf 8 read wordlist af...

python 生成詞云

coding utf 8 from wordcloud import wordcloud import matplotlib.pyplot as plt import jieba from pil import image import numpy as np 生成詞云 defcreate word...