溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Pandas?Matplotlib保存圖形時(shí)坐標(biāo)軸標(biāo)簽太長(zhǎng)導(dǎo)致顯示不全如何解決

發(fā)布時(shí)間:2022-09-23 14:02:06 來(lái)源:億速云 閱讀:359 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要介紹“Pandas Matplotlib保存圖形時(shí)坐標(biāo)軸標(biāo)簽太長(zhǎng)導(dǎo)致顯示不全如何解決”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“Pandas Matplotlib保存圖形時(shí)坐標(biāo)軸標(biāo)簽太長(zhǎng)導(dǎo)致顯示不全如何解決”文章能幫助大家解決問(wè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)題描述

使用pandasDataFrame存儲(chǔ)數(shù)據(jù)并繪制圖像,橫坐標(biāo)軸的標(biāo)簽是ResNet20的各個(gè)layer的名字,像module.layer1.0.conv1.weight這樣,由于太長(zhǎng),導(dǎo)致繪制出來(lái)的圖像是這樣的:

Pandas?Matplotlib保存圖形時(shí)坐標(biāo)軸標(biāo)簽太長(zhǎng)導(dǎo)致顯示不全如何解決

坐標(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),依舊不美觀:

Pandas?Matplotlib保存圖形時(shí)坐標(biāo)軸標(biāo)簽太長(zhǎng)導(dǎo)致顯示不全如何解決

2. 問(wèn)題原因

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

Pandas?Matplotlib保存圖形時(shí)坐標(biāo)軸標(biāo)簽太長(zhǎng)導(dǎo)致顯示不全如何解決

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

Pandas?Matplotlib保存圖形時(shí)坐標(biāo)軸標(biāo)簽太長(zhǎng)導(dǎo)致顯示不全如何解決

默認(rèn)情況下,僅保存圖形給定的部分,如果設(shè)置為tight,將嘗試保存更緊致的圖形。

4. 解決方法

在保存圖形是加入bbox_inches參數(shù):

	# 設(shè)置tight bbox
	fig.savefig('output.png', bbox_inches='tight')

再次保存圖形,此時(shí)的就很ok了:

Pandas?Matplotlib保存圖形時(shí)坐標(biāo)軸標(biāo)簽太長(zhǎng)導(dǎo)致顯示不全如何解決

關(guān)于“Pandas Matplotlib保存圖形時(shí)坐標(biāo)軸標(biāo)簽太長(zhǎng)導(dǎo)致顯示不全如何解決”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI