2013-09-24 2 views
3

나는 천문 데이터 처리를위한 스크립트와 함수를 많이 작성하고있다. 저는 은하계를 가지고 있는데,이를 위해 3 패널 플롯에 몇 가지 다른 특성을 그려 넣고 싶습니다.큰 그림에 matplotlib 그림 삽입

enter image description here

자,이 문제가되지 않습니다 : 나는 여기 레이아웃의 예를 가지고있다. 그러나 때로는 하나의 은하계에 대해서만이 음모를 만들고 싶습니다. 다른 경우에는 내가 큰 플롯이 모형 같이, 각각 세 + 창 구조로 구성되어 있습니다 줄거리로 구성된 만들고 싶어 : 내 코드의 모듈화 및 재사용을 위해서

enter image description here

, 내 함수가 matplotlib.figure.Figure 개체를 반환하도록 한 다음 호출자 기능 또는 대화 형 세션을 허용하도록 설정하려면 - show() 또는 savefig 개체를 선택하거나 큰 그림에 포함할지 결정하십시오. 그러나 나는 문서 나 다른 곳에서 이것에 대한 어떤 힌트도 찾을 수없는 것 같다. 사람들이 그렇게 자주하는 것처럼 보이지 않는다.

어떤 길을 택해야할까요? 나는 axes_grid을 사용하는 것이 해결책이 될지 짐작하지만, 전혀 보이지 않는다. 깨끗하고 발신자를 불가지롭게 생각한다. 어떤 제안?

+0

http://stackoverflow.com/questions/16750333/how-do-i-include-a-matplotlib-figure-object-as-subplot/16754215#16754215 – tacaswell

답변

2

최상의 해결 방법은 그림 레이아웃 논리를 플로팅 논리와 분리하는 것입니다. 이제 데이터를 전환하는 코드를

def three_panel_plot(data, ploting_args, ax1, ax2, ax3): 
    # what you do to plot 

-> 이미지는 인수로 데이터를 어디에 해당 데이터를 너무 플롯해야됩니다 :이처럼 플로팅 코드 뭔가를 작성합니다.

하나만하고 싶다면 3x3 그리드를 만들고 싶다면 레이아웃을 생성 한 다음 축 세트 + 데이터를 반복하면됩니다.

플로팅 루틴에서 객체를 반환하는 방법은 matplotlib에서 매우 어려울 것입니다. 내부가 너무 연결되어 있습니다.

+2

감사합니다. 이것이 내가 끝내 준 것입니다. 비록 나에게 조금 좌절감을 안겨주더라도 축과 같이 인물을 구성 할 수 있다는 것이 좋을 것입니다 ... – Thriveth

+1

이렇게하려면 백엔드 작동 방식을 크게 재조정해야합니다. . 즉, 나는 이런 식으로 '슈퍼 인물'을 만드는 것보다 더 모듈화 된 자신을 확신했다. 만약 당신이'def my_plot (ax, * args, ** kwargs)'로 당신의 서명을 주문한 경우, 그것들은 내장 된 플로팅 명령에 대한 예상 서명 패턴과 일치합니다. 이 질문은 충분 해졌다 (나는 2 ~ 3 번 그것에 대한 변이에 답했다) 나는 표준적인 예를 써야한다. – tacaswell

관련 문제