import matplotlib.pyplot as plt

f1,(ax1,ax2) = plt.subplots(num=1,nrows=2, ncols=1)
f2,(ax3,ax4) = plt.subplots(num=2,nrows=2, ncols=1)

plt.close(2)
plt.close(1)

plt.figure(2)
plt.show()

Показан рисунок 2, но на нем нет осей, почему? А как сделать так, чтобы оси отображались при замкнутой цифре 1 и наоборот?

-1
BIGoperaFAN 15 Ноя 2020 в 01:04

2 ответа

Лучший ответ

Итак, я создал входную переменную, в которой пользователь может выбрать фигуру, которую он хочет видеть (в вашем случае эта переменная может быть результатом какого-то вычисления или чего-то еще).

glob = int(input('Enter figure number'))

Затем я использовал тот же код построения графика, который вы предоставили (я добавил списки значений, чтобы убедиться, что это действительно работает), чтобы определить цифры:

f1,(ax1, ax2) = plt.subplots(num=1,nrows=2, ncols=1)
ax1.plot(x,y)
ax2.plot(x,np.exp(x))

f2,(ax3,ax4) = plt.subplots(num=2,nrows=2, ncols=1)
ax3.plot(x,y)
ax4.plot(x,np.sqrt(x))

Затем я использовал условие для записи пользователя, чтобы выбрать фигуру для построения, закрыв другую:

if glob==1:
    plt.close(2)
elif glob==2:
    plt.close(1)
else:
    print('Figure non defined')

Обратите внимание , что это решение работает только один раз, и вам придется запускать программу каждый раз, когда вы хотите выбрать фигуру. Чтобы решить эту проблему, есть еще одна альтернатива:

i=0
while i<4:
    glob = int(input('Enter figure number'))
    if glob==1:
        f1,(ax1, ax2) = plt.subplots(num=1,nrows=2, ncols=1)
        ax1.plot(x,y)
        ax2.plot(x,np.exp(x))
        plt.show()
    elif glob==2:
        f2,(ax3,ax4) = plt.subplots(num=2,nrows=2, ncols=1)
        ax3.plot(x,y)
        ax4.plot(x,np.sqrt(x))
        plt.show()
    else:
        print('Figure non defined')
    i+=1

Практически вам нужно определить фигуры внутри петли.

0
Yassine Majdoub 15 Ноя 2020 в 11:47

Когда я избавился от plt.close(), график получился ожидаемым:

import matplotlib.pyplot as plt

f1,(ax1,ax2) = plt.subplots(num=1,nrows=2, ncols=1)
f2,(ax3,ax4) = plt.subplots(num=2,nrows=2, ncols=1)

plt.show()

Я много использовал matplotlib, и у меня никогда не было причин использовать, и я даже не видел plt.close. Я предполагаю, что в этом нет необходимости, если у вас нет конкретного варианта использования.

0
Warlax56 14 Ноя 2020 в 23:10