2017-04-01 2 views
2

저는 현재 파이썬에서 Jupyter Notebook으로 matplotlib으로 플롯을 만드는 기본 철학을 배우고 있습니다. 내 주요 불만은 subplots 만들기에 관해서, 왜 내가 하나의 청크에서 코드를 실행해야합니까? 그리고 내가 별도의 단계로 실행하려고 할 때마다 이상한 구획을 던졌습니다. exampple의 경우 :matplotlib로 서브 플로트 생성하기

plt.subplot(211)

plt.plot(range(10))

plt.subplot(212, facecolor='y')

plt.plot(randn(50))

나는 4 단계 그들 각각을 실행하는 데 반대 한 번에 코드의 그 4 개 라인을 excute에해야합니다. 정확히 여기 무슨 일 이니? 왜 두 가지 접근 방식간에 차이점이 있습니까?

+0

주 : 여기

은 일례이며 ("s"포함). 이 접근법은 고전적인 MATLAB 스타일과 약간 다르며 한 줄에 숫자와 튜플을 선언 할 수 있습니다. '무화과, (ax1, ax2) = plt.subplots (1, 2, sharey = 사실)'. 이 축에는 언제든지 새 데이터를 지정할 수 있습니다. – pylang

+0

@pylang 요점은'plt.subplot' 또는'plt.subplots'을 사용하여 subplot을 생성 할 것인지 아닌지입니다. 요점은 statemachine 또는 oo api를 사용할지 여부, 즉 객체에 대한 참조를 유지할지 여부입니다. – ImportanceOfBeingErnest

+0

어쩌면 나는 분명히 그것을 더 분명히 했어야했다. 제가하고자하는 일은 서브 플로트를 시작하고 그 위에 플롯을 작성한 다음 다른 서브 플로트를 시작하고 그 위에 또 다른 플롯을 만드는 것입니다. 문제는 원하는 셀의 셀에서 각 단계를 실행해야만 원하는 효과를 얻을 수 있다는 것입니다. 모든 중간 결과가 어떻게 보이는지 확인할 수있는 이점을 얻기 위해 여러 하위 단계를 단계별로 만들 수없는 이유는 무엇입니까? –

답변

1

주피터 노트북에서 셀이 평가되고 그림이 표시되면 해당 셀에 대한 참조가 삭제되고 해당 셀에서 생성 된 그림이 닫힙니다.
새 셀에서 plt.subplot()을 호출하면 pyplot에 열려있는 그림이 표시되지 않으므로 그림이 새로 만들어집니다.

대부분의 pyplot 명령은 다음과 같이 작동합니다. 열린 그림이 있는지 확인하십시오 (가능하면 현재 축도 있음). 이 경우 해당 숫자 (축)를 조작하고 그렇지 않은 경우이를 작성하십시오. 이것이 종종 statemachine이라고 불리는 이유입니다. 현재 상태에 따라 뭔가를하십시오.

객체 지향 API도 있습니다. 그것은 명시 적으로 당신이 작동하고자하는 객체의 메소드를 호출함으로써 작동합니다. 따라서 이전 셀의 인물이나 축을 재사용하려면 해당 셀에 대한 참조를 유지해야합니다.

fig = plt.figure()을 명시 적으로 호출하여 fig을 다음 셀에서 계속 사용할 수 있습니다. 축과 동일하게 ax = fig.add_subplot(111)을 호출하면 다음 셀에서 해당 하위 플롯을 사용할 수 있습니다. 언제든지 fig으로 전화하여 그림의 디스플레이를 호출하십시오. (http://matplotlib.org/examples/pylab_examples/subplots_demo.html) plt.subplots() '']라는 미세한 대체가

enter image description here

+0

고맙습니다. 이게 내가 원하는거야. 'memoryless'것은 나에게 매우 직관적 인 것처럼 보이지 않습니다. –

관련 문제