Подтвердить что ты не робот

Как сообщить Matplotlib о создании второго (нового) сюжета, а затем о сюжете на старом?

Я хочу построить данные, затем создать новую фигуру и построить данные2, и, наконец, вернуться к исходному сюжету и сюжету data3, вроде как:

import numpy as np
import matplotlib as plt

x = arange(5)
y = np.exp(5)
plt.figure()
plt.plot(x, y)

z = np.sin(x)
plt.figure()
plt.plot(x, z)

w = np.cos(x)
plt.figure("""first figure""") # Here the part I need
plt.plot(x, w)

FYI Как сообщить matplotlib, что я закончил с сюжетом? делает что-то подобное, но не совсем! Это не позволяет мне получить доступ к этому оригинальному сюжету.

4b9b3361

Ответ 1

Если вы регулярно занимаетесь такими делами, возможно, стоит изучить объектно-ориентированный интерфейс matplotlib. В вашем случае:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(5)
y = np.exp(x)
fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
ax1.plot(x, y)

z = np.sin(x)
fig2 = plt.figure()
ax2 = fig2.add_subplot(111)
ax2.plot(x, z)

w = np.cos(x)
ax1.plot(x, w) # can continue plotting on the first axis

Это немного более подробный, но он намного яснее и легче отслеживать, особенно с несколькими цифрами, каждая с несколькими подзаголовками.

Ответ 2

Когда вы вызываете figure, просто укажите график.

x = arange(5)
y = np.exp(5)
plt.figure(0)
plt.plot(x, y)

z = np.sin(x)
plt.figure(1)
plt.plot(x, z)

w = np.cos(x)
plt.figure(0) # Here the part I need
plt.plot(x, w)

Изменить: обратите внимание, что вы можете пронумеровать графики, но вы хотите (здесь, начиная с 0), но если вы не укажете цифру с номером вообще при создании нового, автоматическая нумерация начнется с 1 ( "Matlab Style" в соответствии с документами).

Ответ 3

Однако нумерация начинается с 1, поэтому:

x = arange(5)
y = np.exp(5)
plt.figure(1)
plt.plot(x, y)

z = np.sin(x)
plt.figure(2)
plt.plot(x, z)

w = np.cos(x)
plt.figure(1) # Here the part I need, but numbering starts at 1!
plt.plot(x, w)

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

(пока у вас еще нет комментариев, извините за новый ответ!)

Ответ 4

Один из способов, который я нашел после некоторой борьбы, создает функцию, которая получает матрицу data_plot, имя файла и порядок в качестве параметра для создания ящиков из данных в упорядоченном рисунке (разные порядки = разные цифры) и сохраняет его под заданным именем_файла.

def plotFigure(data_plot,file_name,order):
    fig = plt.figure(order, figsize=(9, 6))
    ax = fig.add_subplot(111)
    bp = ax.boxplot(data_plot)
    fig.savefig(file_name, bbox_inches='tight')
    plt.close()