用 Python 绘制了若干张词云图,惊艳了所有人
作者 | 俊欣
來源 |?關(guān)于數(shù)據(jù)分析與可視化
在數(shù)據(jù)可視化圖表中,詞云圖的應(yīng)用隨處可見。它通常是對輸入的一段文字進(jìn)行詞頻提取,然后以根據(jù)詞匯出現(xiàn)頻率的大小集中顯示高頻詞,簡潔直觀高效,今天小編就來分享一下在Python如何繪制出來精湛的詞云圖。
小試牛刀
我們先來嘗試?yán)L制一張簡單的詞云圖,用到的Python當(dāng)中的wordcloud模塊來繪制,
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í)候就需要用到j(luò)ieba模塊了,代碼如下
text_cut?=?jieba.lcut(text) #?將分好的詞用某個(gè)符號分割開連成字符串 text_cut?=?'?'.join(text_cut)當(dāng)然了,得到的結(jié)果當(dāng)中或許存在著不少我們不需要看的、無關(guān)緊要的內(nèi)容,這個(gè)時(shí)候就需要用到停用詞了,我們可以自己來構(gòu)建,也可以直接使用別人已經(jīng)構(gòu)建好的停詞表,這里小編采用的是后者,代碼如下
stop_words?=?open(r"常見中文停用詞表.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
這樣一張極其簡單的詞云圖算是做好了,當(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繪制出來的詞云圖也是非常酷炫的,其中我們主要是用到下面這個(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: 最大的字號
max_words: 可以容納下的最大單詞數(shù)量
stopwords: 用于篩選常見的停用詞
custom_stopwords: 要是自建有停用詞表,可以拿來用
palette: 調(diào)色板
我們來嘗試?yán)L制一個(gè)詞云圖,代碼如下
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參數(shù)作為調(diào)色板,可以任意變換的,具體參考:https://jiffyclub.github.io/palettable/ 這個(gè)網(wǎng)站。
pyecharts
最后我們來看一下如何用Pyecharts模塊來進(jìn)行詞云圖的繪制,代碼如下
from?pyecharts?import?options?as?opts from?pyecharts.charts?import?Page,?WordCloudwords?=?[("皇帝",?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
出來的結(jié)果略顯簡單了,不過這里值得注意的是,pyecharts當(dāng)中的WordCloud()方法傳入的數(shù)據(jù)是指定的詞語以及其出現(xiàn)的頻次,這個(gè)和之前的操作有所不同
往期回顧
花 39 美金請AI畫家弄了個(gè)Logo
用 PySpark ML 構(gòu)建機(jī)器學(xué)習(xí)模型
在軟件工程領(lǐng)域,搞科研的這十年!
7歲男童因下棋太快,被機(jī)器人夾斷手指?
分享 點(diǎn)收藏 點(diǎn)點(diǎn)贊 點(diǎn)在看總結(jié)
以上是生活随笔為你收集整理的用 Python 绘制了若干张词云图,惊艳了所有人的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何获取租户中所有的Team
- 下一篇: 使用JS模拟键盘、鼠标操作