首頁 > 軟體

Pandas Matplotlib儲存圖形時座標軸標籤太長導致顯示不全問題的解決

2022-06-30 22:01:40

前言

本篇部落格主要解決在使用pandas繪製影象並儲存時,由於標籤太長,導致座標軸上的標籤顯示不全的問題。剛遇到問題時調整了一下圖片大小,然鵝並沒有卵用,於是乎就檢索了一下問題,發現沒有解決pandas的。查詢無果後,檢視了一下官方檔案,頓悟,這不就是matplotlib嘛,換了一個關鍵字再查詢,果然,就是。所以本篇同樣適用於解決matplotlib繪製影象時出現的這個問題。

	# 部分程式碼
	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. Densen(element-wise)")
	ax.set_xticklabels(df_sparsity.Name, rotation=90)

	fig = ax.get_figure()
	fig.savefig('output.png')

1. 問題描述

使用pandasDataFrame儲存資料並繪製影象,橫座標軸的標籤是ResNet20的各個layer的名字,像module.layer1.0.conv1.weight這樣,由於太長,導致繪製出來的影象是這樣的:

座標軸的標籤沒有顯示全,於是就嘗試改變影象的大小:

	# 改變下高度
	ax = df_sparsity_tmp.iloc[0:-1].plot(kind='bar', figsize=[30,50], title="Sparse vs. Densen(element-wise)")

於是影象就變成了下面這樣,雖然有效果,但圖片被拉長,依舊不美觀:

2. 問題原因

既然調整繪製影象尺寸之後繪製出來的圖片依舊不符合預期,那就只能看看官方的檔案了----pandas.DataFrame.plot(),看看是不是還有其他引數,能夠使影象的大小及位置不變,座標軸的繪製空間適當調整。然後就發現了這個:

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

預設情況下,僅儲存圖形給定的部分,如果設定為tight,將嘗試儲存更緊緻的圖形。

4. 解決方法

在儲存圖形是加入bbox_inches引數:

	# 設定tight bbox
	fig.savefig('output.png', bbox_inches='tight')

再次儲存圖形,此時的就很ok了:

結束語

到此這篇關於Pandas Matplotlib儲存圖形時座標軸標籤太長導致顯示不全問題解決的文章就介紹到這了,更多相關Pandas Matplotlib儲存圖形顯示不全內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com