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에 대한 객체 지향 인터페이스를 조사할 가치가 있을 것입니다.당신의 경우:
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
(문서에 따라 "매트랩 스타일").
그러나 번호 매기기는 다음에서 시작합니다.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)
어디를 명령합니까?h
원하는 축 객체의 핸들로 해당 축에 초점을 맞춥니다.
(아직 댓글 권한이 없습니다. 새 답변에 대해 죄송합니다!)
여기서 수락된 답은 객체 지향 인터페이스를 사용하라는 것입니다.matplotlib
하지만 답변 자체는 MATLAB 스타일 인터페이스의 일부를 통합합니다.matplotib.pyplot
).
만약 당신이 그런 종류의 것을 좋아한다면, OOP 방법만을 사용하는 것이 가능합니다.
import numpy as np
import matplotlib
x = np.arange(5)
y = np.exp(x)
first_figure = matplotlib.figure.Figure()
first_figure_axis = first_figure.add_subplot()
first_figure_axis.plot(x, y)
z = np.sin(x)
second_figure = matplotlib.figure.Figure()
second_figure_axis = second_figure.add_subplot()
second_figure_axis.plot(x, z)
w = np.cos(x)
first_figure_axis.plot(x, w)
display(first_figure) # Jupyter
display(second_figure)
이렇게 하면 사용자가 수치를 수동으로 제어할 수 있으며, 관련 문제를 방지할 수 있습니다.pyplot
하나의 수치만 지원하는 의 내부 상태입니다.
각 반복에 대해 개별 프레임을 쉽게 플롯할 수 있는 방법은 다음과 같습니다.
import matplotlib.pyplot as plt
for grp in list_groups:
plt.figure()
plt.plot(grp)
plt.show()
그러면 파이썬은 다른 프레임을 플롯할 것입니다.
고생 끝에 찾은 한 가지 방법은 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()
언급URL : https://stackoverflow.com/questions/6916978/how-do-i-tell-matplotlib-to-create-a-second-new-plot-then-later-plot-on-the-o
'programing' 카테고리의 다른 글
문자열을 정의할 수 있습니까?TypeScript에서 비어 있습니까? (0) | 2023.07.16 |
---|---|
Excel 테이블(VBA)에 새 행 추가 (0) | 2023.07.16 |
Mariadb에서 EntityFrameworkCore를 사용하여 재귀 SQL을 실행할 때 오류 발생 (0) | 2023.07.16 |
비디오 임베디드 워드프레스에서 "유체-폭-비디오-랩퍼" 클래스를 제거하는 방법 (0) | 2023.07.16 |
간헐적인 SQL 시간 초과 오류 문제 해결 방법 (0) | 2023.07.16 |