在matlab中,很容易获得并设置图中现有轴的位置:

  pos = get(gca(), 'position')
  set(gca(), 'position', pos)

如何在Matplotlib中做到这一点?

我有两个相关原因需要此:

这些是我要解决的特定问题:
  • 我有一列子图,其中有些具有颜色条,有些没有颜色条,它们的宽度不同,即X轴不对齐。色标会从轴上窃取空间。在matlab中也会发生这种情况,我将使用上述技巧通过将带有颜色条的轴的宽度复制到没有色轴的轴来使所有轴均等宽。
  • 通过收缩轴在各个子图之间添加空间。 Adjust_subplots()函数将所有子图调整为相同。
  • 最佳答案

    在Matplotlib中设置轴的位置类似。您可以使用axes.的get_position和set_position方法

    import matplotlib.pyplot as plt
    
    ax = plt.subplot(111)
    pos1 = ax.get_position() # get the original position
    pos2 = [pos1.x0 + 0.3, pos1.y0 + 0.3,  pos1.width / 2.0, pos1.height / 2.0]
    ax.set_position(pos2) # set a new position
    

    如果还没有,您可能还想看看GridSpec

    08-04 11:13