如何使用python生成詞雲(超詳細注解)?如何生成透明背景的詞雲? O(≧▽≦)O Python趣用



如果你是大佬,這里還是建議你去看 官方文檔,本博客偏向一些萌新。

安裝

首先是我們需要用到的兩個庫,一個是wordcloud用於生成詞雲,還有一個是jieba(外號:結巴)用於進行中文的分詞,如果你制作的圖雲中不包含中文,那么可以不用下載結巴。

環境報錯解決思路

如果你是用的pycharm或者其他類似的虛擬環境,安裝的時候應該會出現關於C++環境缺少的報錯,就算你已經安裝了c++環境,還是照樣報錯。這時候就需要用到離線安裝包了
在這里插入圖片描述
wordcloud離線安裝包下載地址
(https://www.lfd.uci.edu/~gohlke/pythonlibs/#Wordcloud)
首先你需要下載離線安裝包,然后在命令行執行安裝命令
我當前執行的安裝命令為F:\我的大學\項目代碼\python環境\未知領域環境\未知領域\Scripts\python.exe -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade F:\個人資料\安裝 包\wordcloud-1.6.0-cp38-cp38-win_amd64.whl
在這里插入圖片描述

其中F:\我的大學\項目代碼\python環境\未知領域環境\未知領域\Scripts\python.exe是我虛擬環境的地址,如果你用的不是虛擬環境,這里直接寫python即可,然后F:\個人資料\安裝 包\wordcloud-1.6.0-cp38-cp38-win_amd64.whl是我當前下載的離線wordcloud的地址。中間那一部分我之所以使用了-i https://pypi.tuna.tsinghua.edu.cn/simple是安裝wordcloud如果出現依賴其他庫需要下載時用國內鏡像源下載。
在這里插入圖片描述
上面的庫中,除了pymysql外都為wordcloud和其依賴庫。

WordCloud方法介紹

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

wordcloud屬性 作用
font_path 字符串類型, 字體路徑(windows下默認字體路徑為C:\\Windows\\Fonts\\如果是自行安裝的字體,可能會在C:\\Users\\用戶名\\AppData\\Local\\Microsoft\\Windows\\Fonts\\)
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_wordsmin_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="C:\\Users\\xunmi\\AppData\\Local\\Microsoft\\Windows\\Fonts\\WenCangShuFang.ttf",
        # 設置了背景(當前為透明)
        background_color=None,
        mode='RGBA',
        # 寬
        width=1000,
        # 高
        height=880
    )
    # 生成詞雲
    wordcloud.generate(cut_text)
    # 設置詞雲圖片保存路徑
    wordcloud.to_file("圖雲.png")

當前我使用的是文藏書房字體,這是一套免費商用字體,需要的可以自行百度獲得。
在這里插入圖片描述

wordcloud中其他的方法

wordcloud從除了WordCloud外,還有

  • ImageColorGenerator : 基於彩色圖像的顏色生成器。根據RGB圖像生成顏色。單詞將使用彩色圖像中包圍矩形的平均顏色進行着色。
    • 測試
  • random_color_func : 隨機色調顏色生成。
  • colormap_color_func : 給每個單詞指定顏色
  • get_single_color_func : 創建一個顏色函數,該函數返回單個色調和飽和度。

生成自定義樣式和顏色的圖片

使用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="C:\\Users\\xunmi\\AppData\\Local\\Microsoft\\Windows\\Fonts\\WenCangShuFang.ttf",
    # 設置了背景(當前為透明)
    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")

在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM