Python Matplotlib:获取和设置轴位置

Python Matplotlib:获取和设置轴位置,python,matplotlib,axes,subplot,Python,Matplotlib,Axes,Subplot,在matlab中,获取和设置图形上现有轴的位置非常简单: pos = get(gca(), 'position') set(gca(), 'position', pos) 如何在Matplotlib中执行此操作 我之所以需要它,有两个相关的原因: 以下是我试图解决的具体问题: 我有一列子图,其中有些有色条,有些没有,它们的宽度不同,即X轴不对齐。颜色条从轴上窃取空间。这在matlab中也会发生,我会使用上面的技巧,通过将带有颜色条的轴的宽度复制到没有颜色条的轴,使所有轴的宽度相等 通

在matlab中,获取和设置图形上现有轴的位置非常简单:

  pos = get(gca(), 'position')
  set(gca(), 'position', pos)
如何在Matplotlib中执行此操作

我之所以需要它,有两个相关的原因:

以下是我试图解决的具体问题:

  • 我有一列子图,其中有些有色条,有些没有,它们的宽度不同,即X轴不对齐。颜色条从轴上窃取空间。这在matlab中也会发生,我会使用上面的技巧,通过将带有颜色条的轴的宽度复制到没有颜色条的轴,使所有轴的宽度相等

  • 通过收缩轴在各个子地块之间添加空间。函数的作用是:调整所有的子地块


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


如果还没有,你可能还想看看

我试了又试,但如果我玩set_位置,我只会在窗口中移动图形。。如何在y=0或y=-1或其他位置绘制X轴?@DaniPaniz首先尝试使用
ax=plt.gca()
获取轴,然后使用ax.spines['left']设置轴。设置U位置(('data',0)),然后y轴位于
X=0
。此外,您还可以将
left
更改为
bottom
,将x轴设置为y=0。
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