поддержание согласованных ограничений по осям matplotlib - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь создать серию фигур, показывающих геометрические фигуры разных размеров (по одной фигуре на каждой фигуре), но согласованные, равные по оси оси на каждой фигуре. Я не могу заставить axis('equal') хорошо играть с set_xlim в matplotlib.

Вот самый близкий, который я дошел до сих пор:

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 голосов
/ 04 июля 2018

Вы можете сначала определить одну из ваших осей независимо, а затем, когда вы определяете вторую ось, используйте sharex или sharey аргументы

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