99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀用Python繪制了若干張?jiān)~云圖,驚艷了所有人
用Python繪制了若干張?jiān)~云圖,驚艷了所有人
2022-08-10
收藏

作者:俊欣

來(lái)源:關(guān)于數(shù)據(jù)分析與可視化

數(shù)據(jù)可視化圖表中,詞云圖的應(yīng)用隨處可見(jiàn)。它通常是對(duì)輸入的一段文字進(jìn)行詞頻提取,然后以根據(jù)詞匯出現(xiàn)頻率的大小集中顯示高頻詞,簡(jiǎn)潔直觀高效,今天小編就來(lái)分享一下在Python如何繪制出來(lái)精湛的詞云圖。

小試牛刀

我們先來(lái)嘗試?yán)L制一張簡(jiǎn)單的詞云圖,用到的Python當(dāng)中的wordcloud模塊來(lái)繪制,

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

我們導(dǎo)入文本內(nèi)容,并且去除掉一下?lián)Q行符和空格,代碼如下

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

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

text_cut = jieba.lcut(text) # 將分好的詞用某個(gè)符號(hào)分割開(kāi)連成字符串 text_cut = ' '.join(text_cut)

當(dāng)然了,得到的結(jié)果當(dāng)中或許存在著不少我們不需要看的、無(wú)關(guān)緊要的內(nèi)容,這個(gè)時(shí)候就需要用到停用詞了,我們可以自己來(lái)構(gòu)建,也可以直接使用別人已經(jīng)構(gòu)建好的停詞表,這里小編采用的是后者,代碼如下

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

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

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

output

這樣一張極其簡(jiǎn)單的詞云圖算是做好了,當(dāng)然我們可以給它添加一個(gè)背景圖片,例如下面這張圖片,

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

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

然后在WorCloud當(dāng)中添加mask參數(shù)

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

output

深度優(yōu)化

除此之外,還有另外一個(gè)模塊stylecloud繪制出來(lái)的詞云圖也是非常酷炫的,其中我們主要是用到下面這個(gè)函數(shù)

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', ) 

其中幾個(gè)常用的參數(shù)有

  • icon_name: 詞云圖的形狀
  • max_font_size: 最大的字號(hào)
  • max_words: 可以容納下的最大單詞數(shù)量
  • stopwords: 用于篩選常見(jiàn)的停用詞
  • custom_stopwords: 要是自建有停用詞表,可以拿來(lái)用
  • palette: 調(diào)色板

我們來(lái)嘗試?yán)L制一個(gè)詞云圖,代碼如下

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

output

其中的palette參數(shù)作為調(diào)色板,可以任意變換的,具體參考:https://jiffyclub.github.io/palettable/ 這個(gè)網(wǎng)站。

pyecharts

最后我們來(lái)看一下如何用Pyecharts模塊來(lái)進(jìn)行詞云圖的繪制,代碼如下

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

出來(lái)的結(jié)果略顯簡(jiǎn)單了,不過(guò)這里值得注意的是,pyecharts當(dāng)中的WordCloud()方法傳入的數(shù)據(jù)是指定的詞語(yǔ)以及其出現(xiàn)的頻次,這個(gè)和之前的操作有所不同

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }