熱線電話:13121318867

登錄
首頁精彩閱讀用Python繪制了若干張詞云圖,驚艷了所有人
用Python繪制了若干張詞云圖,驚艷了所有人
2022-08-10
收藏

作者:俊欣

來源:關于數據分析與可視化

數據可視化圖表中,詞云圖的應用隨處可見。它通常是對輸入的一段文字進行詞頻提取,然后以根據詞匯出現頻率的大小集中顯示高頻詞,簡潔直觀高效,今天小編就來分享一下在Python如何繪制出來精湛的詞云圖。

小試牛刀

我們先來嘗試繪制一張簡單的詞云圖,用到的Python當中的wordcloud模塊來繪制,

import jieba
from wordcloud import WordCloud import matplotlib.pyplot as plt

我們導入文本內容,并且去除掉一下換行符和空格,代碼如下

text = open(r"明朝那些事兒.txt",encoding='utf8').read()
text = text.replace('n',"").replace("u3000","")

我們需要將其分成一個個的詞,這個時候就需要用到jieba模塊了,代碼如下

text_cut = jieba.lcut(text) # 將分好的詞用某個符號分割開連成字符串 text_cut = ' '.join(text_cut)

當然了,得到的結果當中或許存在著不少我們不需要看的、無關緊要的內容,這個時候就需要用到停用詞了,我們可以自己來構建,也可以直接使用別人已經構建好的停詞表,這里小編采用的是后者,代碼如下

stop_words = open(r"常見中文停用詞表.txt").read().split("n")

下面便是繪制詞云圖的核心代碼了

word_cloud = WordCloud(font_path="simsun.ttc", # 設置詞云字體 background_color="white", # 詞云圖的背景顏色 stopwords=stop_words) # 去掉的停詞 word_cloud.generate(text_cut)
word_cloud.to_file("1.png")

output

這樣一張極其簡單的詞云圖算是做好了,當然我們可以給它添加一個背景圖片,例如下面這張圖片,

主要需要添加的代碼如下所示

background = Image.open(r"5.png")
graph = np.array(background)

然后在WorCloud當中添加mask參數

# 使用WordCloud生成詞云 word_cloud = WordCloud(font_path="simsun.ttc", # 設置詞云字體 background_color="white", # 詞云圖的背景顏色 stopwords=stop_words, # 去掉的停詞 mask=graph)
word_cloud.generate(text_cut)
word_cloud.to_file("1.png")

output

深度優化

除此之外,還有另外一個模塊stylecloud繪制出來的詞云圖也是非??犰诺?,其中我們主要是用到下面這個函數

gen_stylecloud(text=None, icon_name='fas fa-flag', colors=None, palette='cartocolors.qualitative.Bold_5', background_color="white", max_font_size=200, max_words=2000, stopwords=True, custom_stopwords=STOPWORDS, output_name='stylecloud.png', ) 

其中幾個常用的參數有

  • icon_name: 詞云圖的形狀
  • max_font_size: 最大的字號
  • max_words: 可以容納下的最大單詞數量
  • stopwords: 用于篩選常見的停用詞
  • custom_stopwords: 要是自建有停用詞表,可以拿來用
  • palette: 調色板

我們來嘗試繪制一個詞云圖,代碼如下

stylecloud.gen_stylecloud(text=text_cut,
                          palette='tableau.BlueRed_6',
                          icon_name='fas fa-apple-alt',
                          font_path=r'田英章楷書3500字.ttf',
                          output_name='2.png',
                          stopwords=True,
                          custom_stopwords=stop_words)

output

其中的palette參數作為調色板,可以任意變換的,具體參考:https://jiffyclub.github.io/palettable/ 這個網站。

pyecharts

最后我們來看一下如何用Pyecharts模塊來進行詞云圖的繪制,代碼如下

from pyecharts import options as opts
from pyecharts.charts import Page, WordCloud

words = [
    ("皇帝", 10000),
    ("朱元璋", 6181),
    ("明朝", 4386),
    ("朝廷", 4055),
    ("明軍", 2467),
    ("士兵", 2244),
    ("張居正", 1868),
    ("王守仁", 1281)
] c = ( WordCloud()
        .add("", words, word_size_range=[20, 100])
        .set_global_opts(title_opts=opts.TitleOpts(title="基本示例"))
    ) c.render("1.html")

output

出來的結果略顯簡單了,不過這里值得注意的是,pyecharts當中的WordCloud()方法傳入的數據是指定的詞語以及其出現的頻次,這個和之前的操作有所不同

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢