Pandas?Matplotlib保存圖形時(shí)坐標(biāo)軸標(biāo)簽太長(zhǎng)導(dǎo)致顯示不全問(wèn)題的解決
前言
本篇博客主要解決在使用pandas繪制圖像并保存時(shí),由于標(biāo)簽太長(zhǎng),導(dǎo)致坐標(biāo)軸上的標(biāo)簽顯示不全的問(wèn)題。剛遇到問(wèn)題時(shí)調(diào)整了一下圖片大小,然鵝并沒(méi)有卵用,于是乎就檢索了一下問(wèn)題,發(fā)現(xiàn)沒(méi)有解決pandas的。查詢無(wú)果后,查看了一下官方文檔,頓悟,這不就是matplotlib嘛,換了一個(gè)關(guān)鍵字再查詢,果然,就是。所以本篇同樣適用于解決matplotlib繪制圖像時(shí)出現(xiàn)的這個(gè)問(wèn)題。
# 部分代碼
df_sparsity = distiller.weights_sparsity_summary(resnet20)
df_sparsity_tmp = df_sparsity[['NNZ (dense)', 'NNZ (sparse)']]
ax = df_sparsity_tmp.iloc[0:-1].plot(kind='bar', figsize=[30,10], title="Sparse vs. Dense\n(element-wise)")
ax.set_xticklabels(df_sparsity.Name, rotation=90)
fig = ax.get_figure()
fig.savefig('output.png')
1. 問(wèn)題描述
使用pandas的DataFrame存儲(chǔ)數(shù)據(jù)并繪制圖像,橫坐標(biāo)軸的標(biāo)簽是ResNet20的各個(gè)layer的名字,像module.layer1.0.conv1.weight這樣,由于太長(zhǎng),導(dǎo)致繪制出來(lái)的圖像是這樣的:

坐標(biāo)軸的標(biāo)簽沒(méi)有顯示全,于是就嘗試改變圖像的大?。?/p>
# 改變下高度 ax = df_sparsity_tmp.iloc[0:-1].plot(kind='bar', figsize=[30,50], title="Sparse vs. Dense\n(element-wise)")
于是圖像就變成了下面這樣,雖然有效果,但圖片被拉長(zhǎng),依舊不美觀:

2. 問(wèn)題原因
既然調(diào)整繪制圖像尺寸之后繪制出來(lái)的圖片依舊不符合預(yù)期,那就只能看看官方的文檔了----pandas.DataFrame.plot(),看看是不是還有其他參數(shù),能夠使圖像的大小及位置不變,坐標(biāo)軸的繪制空間適當(dāng)調(diào)整。然后就發(fā)現(xiàn)了這個(gè):

函數(shù)返回了一個(gè)matplotlib.axes.Axes,既然是matlitplot,那問(wèn)題就很容易解決了,matplotlib老搞這樣的事。查看一下matplotlib的文檔----matplotlib.pyplot.savefig(),可以看到:

默認(rèn)情況下,僅保存圖形給定的部分,如果設(shè)置為tight,將嘗試保存更緊致的圖形。
4. 解決方法
在保存圖形是加入bbox_inches參數(shù):
# 設(shè)置tight bbox
fig.savefig('output.png', bbox_inches='tight')
再次保存圖形,此時(shí)的就很ok了:

結(jié)束語(yǔ)
到此這篇關(guān)于Pandas Matplotlib保存圖形時(shí)坐標(biāo)軸標(biāo)簽太長(zhǎng)導(dǎo)致顯示不全問(wèn)題解決的文章就介紹到這了,更多相關(guān)Pandas Matplotlib保存圖形顯示不全內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pandas讀取中文xlsx文件出現(xiàn)的問(wèn)題
這篇文章主要介紹了pandas讀取中文xlsx文件出現(xiàn)的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
python利用pymysql和openpyxl實(shí)現(xiàn)操作MySQL數(shù)據(jù)庫(kù)并插入數(shù)據(jù)
這篇文章主要為大家詳細(xì)介紹了如何使用Python連接MySQL數(shù)據(jù)庫(kù),并從Excel文件中讀取數(shù)據(jù),將其插入到MySQL數(shù)據(jù)庫(kù)中,有需要的小伙伴可以參考一下2023-10-10
在Python中使用__slots__方法的詳細(xì)教程
這篇文章主要介紹了在Python中使用__slots__方法的詳細(xì)教程,__slots__方法是Python的一個(gè)重要內(nèi)置類方法,代碼基于Python2.x版本,需要的朋友可以參考下2015-04-04
構(gòu)建Python包的五個(gè)簡(jiǎn)單準(zhǔn)則簡(jiǎn)介
這篇文章主要介紹了構(gòu)建Python包的五個(gè)簡(jiǎn)單準(zhǔn)則簡(jiǎn)介,在Github開(kāi)源合作日趨主流的今天,健壯的Python包的構(gòu)建成為開(kāi)發(fā)者必須要考慮到的問(wèn)題,本文提出了五項(xiàng)建議,需要的朋友可以參考下2015-06-06
jupyter .ipynb轉(zhuǎn).py的實(shí)現(xiàn)操作
這篇文章主要介紹了jupyter .ipynb轉(zhuǎn).py的實(shí)現(xiàn)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03

