首页 > 解决方案 > 保持一致的 matplotlib 轴限制

问题描述

我正在尝试制作一系列图形,显示不同大小的几何形状(每个图形中的一个形状),但每个图形上的轴一致、等距。我似乎无法在 matplotlibaxis('equal')中玩得很好。set_xlim

这是我到目前为止最接近的:

pts0 = np.array([[13,34], [5,1], [ 0,0], [7,36], [13,34]], dtype=np.uint8)
pts1 = np.array([[10,82], [119,64], [149,63], [136,0], [82,14], [81,18], 
[26,34], [3,29], [0,34], [10,82]], dtype=np.uint8)

shapes = [pts0,pts1]
for i in range(2):
    pts = shapes[i]   
    fig = plt.figure()
    ax1 = fig.add_subplot(111)
    plotShape = patches.Polygon(pts, True, fill=True)
    p = PatchCollection([plotShape], cmap=cm.Greens)
    color = [99]
    p.set_clim([0, 100])
    p.set_array(np.array(color))
    ax1.add_collection(p)
    ax1.axis('equal')
    ax1.set_xlim(-5,200)
    ax1.set_ylim(-5,200)
    ax1.set_title('pts'+str(i))
    plt.show()

在我的系统中,这会导致两个图形具有相同的轴,但它们都没有显示 y=0 或形状的下部。如果我删除线ax1.set_ylim(-5,200),那么图“pts1”看起来是正确的,但图“pts0”的限制是形状根本不显示。

我的理想情况是将图形的左下角“锚定”在(-5,-5),将xlim定义为200,并允许x轴的缩放和ymax的值像图形一样“浮动”窗口已调整大小,但现在我很高兴能始终如一地获得图形中的形状。

任何帮助将不胜感激!

标签: pythonmatplotlibequals

解决方案


您可以先独立定义一个轴,然后在定义第二个轴时使用sharexsharey参数

new_ax = fig.add_axes([<bounds>], sharex=old_ax)

推荐阅读