plt图片输出 python_利用Python制作词云,wordcloud神器你值得拥有
相信許多人都看到過(guò)下面這樣的詞云圖,詞云圖是一種很好的可視化工具,其作用主要是為了文本數(shù)據(jù)的視覺(jué)表示,既酷炫又能突出重點(diǎn)。
關(guān)于詞云圖的制作,網(wǎng)上能夠搜集到很多的教程,許多都是利用了專(zhuān)用的工具,這些工具便捷又強(qiáng)大,但是它們普遍存在一個(gè)問(wèn)題:功能太過(guò)專(zhuān)一,且適用范圍有限。
今天我們要嘗試的,是使用通用的編程語(yǔ)言python來(lái)制作詞云。
python這門(mén)編程語(yǔ)言非常地簡(jiǎn)單易用,即使看起來(lái)很復(fù)雜的設(shè)置,python用一個(gè)庫(kù)和幾條代碼就能搞定了~
第一步:下載并安裝Anaconda
進(jìn)入Anaconda官網(wǎng),選擇適合你電腦的版本,推薦下載使用python3.6版本,因?yàn)樵谧钚碌陌姹井?dāng)中,許多python之前的語(yǔ)言缺陷都得到了解決。
下載完成后,跟一般的軟件一樣安裝即可。安裝好后在cmd中打開(kāi)jupyter book,并新建一個(gè)目錄。
第二步:分析文本生成詞云
詞云分析的對(duì)象,是文本。理論上講,文本可以是各種語(yǔ)言的。英文、中文、法文、阿拉伯文……
最近大家都在追權(quán)力的游戲,我就在wiki上面搜索權(quán)力的游戲并將一些文本復(fù)制粘貼,存入wordcloud的文本里。
wordcloud把詞云當(dāng)作一個(gè)對(duì)象,它可以將文本中詞語(yǔ)出現(xiàn)的頻率作為一個(gè)參數(shù)繪制詞云,而詞云的大小、顏色、形狀等都是可以設(shè)定的。
生成一個(gè)漂亮的詞云文件三步就可以完成。即:
1、配置對(duì)象參數(shù)?
2、加載詞云文本??
3、輸出詞云文件 (如果不加說(shuō)明默認(rèn)的圖片大小為400 * 200)
首先安裝這個(gè)庫(kù):
pip install wordcloud
簡(jiǎn)單了解一下wordcloud庫(kù)的一些方法:
打開(kāi)jupyter,進(jìn)行詞云的繪制。
#讀取詞云文本
filename = "Game of Thrones.txt"
with open(filename) as f:
mytext = f.read()
mytext
然后導(dǎo)入詞云庫(kù),利用 mytext 中存儲(chǔ)的文本內(nèi)容來(lái)制造詞云。
from wordcloud import WordCloud
wordcloud = WordCloud().generate(mytext)
這兩句代碼運(yùn)行沒(méi)有任何的反應(yīng),但是此時(shí)詞云分析已經(jīng)完成了。制作詞云的核心步驟只需要這2行語(yǔ)句,而且第一條還只是從擴(kuò)展包里找外援。但是程序并不會(huì)給我們顯示任何東西。
接下來(lái)我們需要python的一個(gè)強(qiáng)大庫(kù),matplotlib,執(zhí)行下面的代碼,詞云圖就出來(lái)了。
%pylab inlineimport matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
丹尼真的是妥妥的大女主啊,臨冬城的出現(xiàn)比例也很大。
完整代碼如下:
filename = "Game of Thrones.txt"with open(filename) as f:
?mytext = f.read()from wordcloud import WordCloud
wordcloud = WordCloud().generate(mytext)
%pylab inlineimport matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
以上就是利用wordcloud制作詞云的方法,僅僅用了十行代碼就實(shí)現(xiàn)了喲~
第三步,自定義圖片詞云
上面的示例用的是英文文檔,默認(rèn)輸出的詞云圖是長(zhǎng)方形的,接下來(lái)我們要使用中文文檔,然后實(shí)現(xiàn)輸出有形狀的圖片。
這時(shí)僅僅使用wordcloud庫(kù)沒(méi)有辦法實(shí)現(xiàn)我們的需求,我們還需要使用jieba和scipy兩個(gè)庫(kù)。
在生成詞云的時(shí)候,Wordcloud默認(rèn)是按照空格或者標(biāo)點(diǎn)作為分割符來(lái)對(duì)目標(biāo)文本進(jìn)行分詞處理。
若是英文文本可直接調(diào)用,若是中文文本,則需要先對(duì)文本進(jìn)行分詞處理然后用空格拼接,再調(diào)用wordcloud庫(kù)函數(shù)。
jieba是實(shí)現(xiàn)中文分詞的組件,它能夠?qū)⒕渥泳_的切開(kāi),適合做文本分析,還支持繁體分詞、自定義詞典等,關(guān)于jieba庫(kù)的細(xì)則可以查看文檔:https://pypi.org/project/jieba/
想要生成各種形狀的圖片,scipy庫(kù)是必不可少的圖片處理工具。
本次數(shù)據(jù)文檔選用權(quán)力的游戲第八季百度百科分集劇情的前4集內(nèi)容,將內(nèi)容存儲(chǔ)到一個(gè)txt文檔中。
既然需要生成自定義的詞云圖片,那么還需要準(zhǔn)備一張圖片備用,建議使用純色背景的圖片,將圖片存儲(chǔ)后備用。
執(zhí)行下面的代碼即可生成圖片型的詞云圖:
#導(dǎo)入wordcloud模塊和matplotlib模塊from wordcloud import WordCloud,ImageColorGeneratorimport matplotlib.pyplot as pltfrom scipy.misc import imreadimport jieba#讀取一個(gè)txt文件
text = open(r'C:Users...權(quán)力的游戲.txt','r').read()#讀入背景圖片
bg_pic = imread(r'C:Users....jfif')
wordlist_after_jieba = jieba.cut(text, cut_all = True)
wl_space_split = " ".join(wordlist_after_jieba)#生成詞云
font = r'C:WindowsFontssimfang.ttf'
wc = WordCloud(mask=bg_pic,background_color='white',font_path=font, scale=1.5).generate(wl_space_split)
image_colors = ImageColorGenerator(bg_pic)#顯示詞云圖片
plt.imshow(wc)
plt.axis('off')
plt.show()
利用python制作詞云非常簡(jiǎn)單,趕快動(dòng)手操作起來(lái)吧!
- DataCastle -
總結(jié)
以上是生活随笔為你收集整理的plt图片输出 python_利用Python制作词云,wordcloud神器你值得拥有的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何在文字上划横线_如何设计一张618促
- 下一篇: 卤豆棒怎样不会烂?