【发布时间】:2018-10-11 01:43:35
【问题描述】:
我正在使用 GridSpec 来组织子图。我有一个共享的colorbar 用于所有地块。
所有在线建议似乎都指出tight_layout() 是解决轴标签切断问题的方法,但这似乎在这里不起作用(除非它以我不知道的另一种形式出现)。
我还尝试将tight_layout 的rect 参数用于fig、plt 和gs。
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()
这会生成下面的图像。
【问题讨论】:
-
我认为
tight_layout会与您在这里需要的相反。相反,使图形边距更大,例如通过使用bottom=0.3左右。 -
感谢您的回复。你介意提供一个具体的例子吗?我已经尝试过
fig.subplots_adjust(bottom=0.3)、plt.subplots_adjust(bottom=0.3)和ax.margins。您指的是不同类型的图形边距吗? -
我指的是
bottom=0.3,如fig.subplots_adjust(bottom=0.3)。如果你能提供一个可运行的例子,我可以修改它。见minimal reproducible example。 -
抱歉,我已经编辑了代码,现在可以运行了。
标签: python matplotlib axis-labels subplot