You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Matplotlib中设置图像与色条之间的间距?已尝试pad参数但无效果

解决Matplotlib中图像与色条间距无法调整的问题

我看到你尝试用pad参数调整图像和色条的间距但没生效——问题出在你同时使用了divider.append_axes()和fig.colorbar()的pad参数,而且当指定cax=cax时,fig.colorbar()的pad会被忽略,真正控制间距的是divider.append_axes()里的pad参数。

关键原因说明

当你通过make_axes_locatable的divider.append_axes()创建色条的轴(cax)时,色条的位置完全由这个方法的参数控制,fig.colorbar()中的pad参数此时不会产生任何作用。另外要注意,append_axes()的pad参数单位是英寸,而不是相对比例,你设置的pad=2其实是2英寸的间距,在40x30的大图里可能效果不明显,需要调整数值来达到预期。

修改后的代码

from mpl_toolkits.axes_grid1 import make_axes_locatable
from matplotlib.colors import LogNorm
from matplotlib.ticker import LogLocator
from matplotlib import rcParams
import numpy as np
import matplotlib.pyplot as plt

rcParams['font.size']=35
x = np.arange(0,16,1)
yx= np.linspace(-50,0,38)
mx = np.random.rand(15,38)
m2 = np.linspace(0,6,38)

fig, ax = plt.subplots(figsize=(40,30))
divider = make_axes_locatable(ax)
# 调整这里的pad值控制间距,比如设为3(3英寸),可根据需求增减
cax = divider.append_axes('right', size='5%', pad=3)

im = ax.pcolor(x,yx,mx.T,norm=LogNorm(0.1, 100),cmap= 'jet')
# 移除这里的pad参数,指定cax后它不会生效
cbar = fig.colorbar(im,cax=cax, orientation='vertical')
cbar.ax.yaxis.set_major_locator(LogLocator())
cbar.ax.set_ylabel('Resistividade \u03C1 [ohm.m]', rotation=270)

ax2=ax.twiny()
ax2.plot(m2,yx,'k--',linewidth=10)
ax2.set_xlabel('Resistividade \u03C1 [ohm.m]')
ax.set_xlabel('Aquisição')
ax.set_ylabel('Profundidade [m]')

plt.savefig('mrec_1.png',bbox_inches='tight', format='png', dpi=300)
plt.show()

额外建议

  • 想要更精细的控制,可以尝试使用小数数值的pad,比如pad=0.8设置更小间距,或pad=5设置更大间距,根据你的图尺寸灵活调整。
  • 不要同时使用divider.append_axes()和fig.colorbar()的pad参数,避免逻辑混淆。

内容的提问来源于stack exchange,提问作者JCV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 08:27:27