簡體   English   中英

Matplotlib(GridSpec)-子圖軸標簽被截斷了嗎? 嘗試過`tight_layout`

[英]Matplotlib (GridSpec) - Subplot axis labels being cut-off? Tried `tight_layout`

我正在使用GridSpec來組織子圖。 我對所有圖都有一個共享的colorbar

在線上的所有建議似乎都指出, tight_layout()是解決軸標簽被切斷的問題的方法,但是,這似乎在這里不起作用(除非它以我不知道的另一種形式出現)。

我已經使用也嘗試rect的參數tight_layoutfigpltgs

import matplotlib
import matplotlib.pyplot as plt
import numpy as np 
from pylab import *
import matplotlib.gridspec as gridspec
import matplotlib.colors
from mpl_toolkits.mplot3d import Axes3D

gs = gridspec.GridSpec(1,7,hspace=0.05,wspace=0.5, width_ratios=[1,1,1,1,1,1,0.1])
figure(num=None, figsize=(18, 2), dpi=80, facecolor='w', edgecolor='k')

data = np.random.rand(3,6,224,5)

for i in range(6):
    ax = plt.subplot(gs[0, i], projection='3d')
    p = ax.scatter(data[0,i,:,0], data[0,i,:,1], data[0,i,:,2], c=data[0,i,:,4], marker='o')
    title("Case " + str(i+1))
    ax.set_xlabel('Batch Size', linespacing=3)
    ax.set_ylabel('Window Size', linespacing=3)
    ax.set_zlabel('Neurons', linespacing=3)
    ax.xaxis.labelpad=20
    ax.yaxis.labelpad=20
    ax.zaxis.labelpad=10

cbar = plt.subplot(gs[0,6])
colorbar(p, cax=cbar, label='RMSE')

plt.show()

這將生成下面的圖像。

在此處輸入圖片說明

如前所述,將bottom參數設置為較大的值(例如, bottom=0.3將為您提供更多空間來容納軸裝飾器。

另外,使圖形稍微高一點(例如3英寸而不是2英寸)可能會很有用,以免將繪圖縮小得太多。

import matplotlib.pyplot as plt
import numpy as np 
import matplotlib.gridspec as gridspec
from mpl_toolkits.mplot3d import Axes3D

gs = gridspec.GridSpec(1,7,hspace=0.05,wspace=0.5, bottom=0.3,
                       left=0.02, right=0.95, width_ratios=[1,1,1,1,1,1,0.1])
fig = plt.figure(figsize=(18, 3), dpi=80, facecolor='w', edgecolor='k')

data = np.random.rand(3,6,224,5)

for i in range(6):
    ax = plt.subplot(gs[0, i], projection='3d')
    p = ax.scatter(data[0,i,:,0], data[0,i,:,1], data[0,i,:,2], 
                   c=data[0,i,:,4], marker='o')
    ax.set_title("Case " + str(i+1))
    ax.set_xlabel('Batch Size', linespacing=3)
    ax.set_ylabel('Window Size', linespacing=3)
    ax.set_zlabel('Neurons', linespacing=3)
    ax.xaxis.labelpad=20
    ax.yaxis.labelpad=20
    ax.zaxis.labelpad=10

cbar = plt.subplot(gs[0,6])
fig.colorbar(p, cax=cbar, label='RMSE')

# This is only needed for jupyter
fig.add_axes([0,0,1,1]).axis("off")

plt.show()

在此處輸入圖片說明

不幸的是,在jupyter中, %matplotlib inline后端始終使用bbox_inches = "tight"設置來創建其映像。 因此,一種解決方法是在圖中創建一些元素,以確保“緊縮”區域足夠大。 在這里,一個選擇是使用fig.add_axes([0,0,1,1]).axis("off")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM