好的,我已经为此工作了几天,尽管在这里和其他地方进行了多次搜索,并尝试了各种方法,但我没有找到任何满足我所希望的一切的解决方案
目标:一个大的绘图,右边有四个小的绘图,底部有一个彩色条
我对完全不同的解决方案持开放态度。我试过GridSpec和子图等等。这只是我拥有的最接近的解决方案之一,它是从matplotlib examples改编而来的
对我来说很重要但在当前状态下仍未发生的事情:
wspace
进行各种调整,但没有真正成功我已经尝试使用Inkscape来说明此代码中的原始绘图是如何以红色显示的,而以绿色显示的是更理想的输出
#%% Example for Stack
# Set page width
# This may be found using \usepackage{layouts} and then in the body
# textwidth = \printinunitsof{in}\prntlen{\textwidth}
textwidth = 5.90666
# Set Plot Color
color = 'cividis'
data = np.random.rand(100, 100)*1e7
AoI = [[25, 75], [25, 75]]
fig = plt.figure(constrained_layout=True)
fig.set_figwidth(textwidth)
gs = fig.add_gridspec(3, 4)
ax1 = fig.add_subplot(gs[0:2, 0:2])
ax1.set(title = 'No Polarization', yticks = [], #xticks = [],
xlim = AoI[0], ylim = AoI[1],
)
ax1.imshow(data, cmap = color)
ax2 = fig.add_subplot(gs[0, 2])
ax2.set(title = '0', yticks = [], #xticks = [],
xlim = AoI[0], ylim = AoI[1],
)
ax2.imshow(data, cmap = color)
ax3 = fig.add_subplot(gs[0, 3])
ax3.set(title = '45', yticks = [], #xticks = [],
xlim = AoI[0], ylim = AoI[1],
)
ax3.imshow(data, cmap = color)
ax4 = fig.add_subplot(gs[1, 2])
ax4.set(title = '90', yticks = [], #xticks = [],
xlim = AoI[0], ylim = AoI[1],
)
ax4.imshow(data, cmap = color)
ax5 = fig.add_subplot(gs[1, 3])
ax5.set(title = '135', yticks = [], #xticks = [],
xlim = AoI[0], ylim = AoI[1],
)
ax5.imshow(data, cmap = color)
ticks = np.array([data.min()*0.9 +data.max()*0.1,
np.average([data.min(),data.max()]),
data.max()*0.9 +data.min()*0.1]).astype(int)
def fmt(x, pos):
a, b = '{:.2e}'.format(x).split('e')
b = int(b)
return r'${} \times 10^{{{}}}$'.format(a, b)
cbar = plt.colorbar(ax1.imshow(data, cmap = cmap), ax=[ax1, ax4, ax5],
#shrink = 0.935, #with ticks
shrink = 0.922, #without ticks
location = 'bottom', ticks = ticks,
anchor = (10,10), format=ticker.FuncFormatter(fmt)
)
fig.suptitle('d = 160 nm (p = 570 nm)')
plt.savefig(fname = 'demo.pdf',
format = 'pdf', dpi = 600, bbox_inches = 'tight', pad_inches = 0)
你所要求的是一些无法自动实现的事情
相反,如果使用aspect='auto',您将得到您想要的结果,只是轴的纵横比不相等。但其他受约束的_布局适用于轴可以绘制的区域,而不是轴实际绘制的区域
当然,您可以做一些数学运算,并手动完成此特定布局。但一般来说,你所要求的几乎是不可能做到的
相关问题 更多 >
编程相关推荐