程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Pandas Matplotlib保存圖形時坐標軸標簽太長導致顯示不全問題的解決

編輯:Python

目錄

前言

1. 問題描述

2. 問題原因

4. 解決方法

結束語

前言

本篇博客主要解決在使用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. Dense\n(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. Dense\n(element-wise)")

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

2. 問題原因

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

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

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

4. 解決方法

在保存圖形是加入bbox_inches參數:

# 設置tight bboxfig.savefig('output.png', bbox_inches='tight')

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

結束語

到此這篇關於Pandas Matplotlib保存圖形時坐標軸標簽太長導致顯示不全問題解決的文章就介紹到這了,更多相關Pandas Matplotlib保存圖形顯示不全內容請搜索軟件開發網以前的文章或繼續浏覽下面的相關文章希望大家以後多多支持軟件開發網!



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved