【问题标题】:Matplotlib: Set different margins for left and right sideMatplotlib:为左侧和右侧设置不同的边距
【发布时间】:2018-08-29 03:25:43
【问题描述】:

我知道如何在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)。那可能吗? 我无法手动设置轴限制,因为绘图是动画的,并且每一步数据都在变化。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    为此有一个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()
    

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

    【讨论】: