matplotlib 为左侧和右侧设置不同的边距

edqdpe6u  于 2023-05-23  发布在  其他
关注(0)|答案(1)|浏览(170)

我知道如何在matplotlib中增加两边的边距:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax.set_xmargin(0.3)   

ax.plot(range(10), np.random.rand(10))
plt.show()

但是,我希望仅在右侧留有保证金:比如ax.set_xmargin(left=0.0, right=0.3)。这可能吗?我不能手动设置轴限制,因为图是动画的,并且数据在每一步都在变化。

odopli94

odopli941#

有一个old feature request用于此,它仍然是开放的。所以,不,你不能像任何当前版本的matplotlib那样独立地设置边距。
当然,你可以编写自己的函数来做你想做的事情。

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax.plot([1,2,3],[1,3,1])

def set_xmargin(ax, left=0.0, right=0.3):
    ax.set_xmargin(0)
    ax.autoscale_view()
    lim = ax.get_xlim()
    delta = np.diff(lim)
    left = lim[0] - delta*left
    right = lim[1] + delta*right
    ax.set_xlim(left,right)

set_xmargin(ax, left=0.05, right=0.2)

plt.show()

在动画中使用此函数需要在每个动画步骤中调用它。这可能会减慢动画的速度,但对于大多数应用程序来说仍然是可以的。

相关问题