[python] Matplotlib에 두 번째 (새) 플롯을 만든 다음 나중에 이전 플롯을 만들도록 어떻게 지시합니까?

데이터를 플로팅 한 다음 새 그림 및 플롯 데이터 2를 만들고 마지막으로 다음과 같이 원래 플롯 및 플롯 데이터 3으로 돌아갑니다.

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's the part I need
plt.plot(x, w)

참고 matplotlib에 플롯이 완료되었음을 어떻게 알 수 있습니까? 비슷한 것을하지만 꽤하지 않습니다! 원래 음모에 액세스 할 수 없습니다.



답변

이와 같은 일을 정기적으로 수행하는 경우 matplotlib에 대한 객체 지향 인터페이스를 조사하는 것이 좋습니다. 귀하의 경우 :

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(5)
y = np.exp(x)
fig1, ax1 = plt.subplots()
ax1.plot(x, y)
ax1.set_title("Axis 1 title")
ax1.set_xlabel("X-label for axis 1")

z = np.sin(x)
fig2, (ax2, ax3) = plt.subplots(nrows=2, ncols=1) # two axes on figure
ax2.plot(x, z)
ax3.plot(x, -z)

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

좀 더 장황하지만 특히 여러 개의 하위 그림이있는 여러 그림을 통해 추적하는 것이 훨씬 명확하고 쉽습니다.


답변

을 호출 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's the part I need
plt.plot(x, w)

편집 : 당신이 원하는대로 플롯 0의 번호를 매길 수는 있지만 (여기서부터 시작 ) 새로운 것을 만들 때 숫자를 전혀 제공하지 않으면 자동 번호 매기기는 1( “Matlab Style”)에 따라 시작 됩니다 문서에).


답변

그러나 번호는에서 시작 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's the part I need, but numbering starts at 1!
plt.plot(x, w)

또한 서브 플로트와 같이 그림에 여러 개의 축이있는 경우 원하는 축 개체의 핸들 인 axes(h)where 명령을 사용하여 h해당 축에 초점을 맞 춥니 다.

(아직 댓글 권한이 없습니다. 새로운 답변에 대해 죄송합니다.)


답변

내가 고군분투 한 후에 찾은 한 가지 방법은 data_plot 행렬, 파일 이름 및 순서를 매개 변수로 가져 와서 지정된 그림에서 주어진 데이터에서 상자 그림을 생성하는 함수 (다른 순서 = 다른 그림)를 만들어 주어진 file_name 아래에 저장하는 함수를 만드는 것입니다.

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()


답변