保持一致的matplotlib轴限制

时间:2018-07-03 21:28:04

标签: python matplotlib equals

我正在尝试生成一系列图形,这些图形显示不同大小的几何形状(每个图形中的一个形状),但每个图形上的坐标轴均等,间距一致。我似乎无法axis('equal')与matplotlib中的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的值缩放为“ float”当调整了图形窗口的大小时,但现在我很高兴能始终如一地获得图形内部的形状。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您可以先独立定义一个轴,然后在定义第二个轴时,使用 sharex sharey 自变量

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