2016-09-28 2 views
3

간단히 말해서 파이썬에서 한 번에 scatter matrixboxplot을 출력하는 함수를 작성하고 싶습니다. 2x1 플롯 팅 어레이가있는 그림을 만들어서이 작업을 수행 할 것이라고 생각했습니다. 나는 Jupyter 노트북 사용하여 코드를 실행할 때 : 내가 얻을matplotlib를 사용하여 한 번에 두 개의 그래프 출력

def boxplotscatter(data): 
    f, ax = plt.subplots(2, 1, figsize = (12,6)) 
    ax[0] = scatter_matrix(data, alpha = 0.2, figsize = (6,6), diagonal = 'kde') 
    ax[1] = data.boxplot() 

을, 데이터를 사용하여 pdf 전화 :

enter image description here

내가 기대 정확히하지 즉 - 나는 출력에 원 2 개의 빈 그리드 및 산포 행렬에 포함 된 상자 플롯이 아닌 boxplot 아래에 배치됩니다.

이 코드를 수정하는 것에 대한 생각?

답변

0

여기서 문제는 실제로 생성 된 축에 플롯하지 않는다는 것입니다. 목록의 내용을 바꾸는 것입니다. ax. matplotlib의 객체 지향 인터페이스에 익숙하지 않지만 올바른 구문은 ax[i] = plot()이 아닌 ax[i,j].plot()입니다. 내가 제공 할 수 이제 유일한 해결책은 그런 기능적인 인터페이스를 사용하는 것입니다 :

def boxplotscatter(data): 
    f, ax = plt.subplots(2, 1, figsize = (12,6)) 
    plt.subplot(211) 
    scatter_matrix(data, alpha = 0.2, figsize = (6,6), diagonal = 'kde') 
    plt.subplot(212) 
    data.boxplot() 
1

나는 당신이 당신 플로팅 함수의 인수로 축을 통과 할 필요가 있다고 생각합니다.

f, ax = plt.subplots(2, 1, figsize = (12,6)) 
def boxplotscatter(data, ax): 
    ax[0] = scatter_matrix(data, alpha = 0.2, figsize = (6,6), diagonal = 'kde') 
    ax[1] = data.boxplot() 
+0

이렇게하면 불필요한 빈 그리드는 제거되지만 상자 플롯이 스 캐터 매트릭스에 포함되지 않도록 "튀어 나오지"않습니다. –

+0

팬더 플롯이 이미 그 기능 안에서 인물을 부르고 있기 때문에이 행동이 필요한 것 같습니다. 즉, 호출 될 때마다 표시됩니다. 어쨌든, 함수가 축을 반환하면 주어진 축을 그림 자체에서 분리하여 원하는 레이아웃으로 전달하는 방법이 있는지 확인했습니다 (나중에 다른 그림을 추가 할 수 있음). 그러나, 이것을 읽고, 이것이 옵션 [link] (http://stackoverflow.com/questions/6309472/matplotlib-can-i-create-axessubplot-objects-then-add-them-to-a)이 아닌 것으로 판명되었습니다. - 구성 - 인스턴스). – josecoto

+0

^자신의 대답으로 이것을 자유롭게 돌리면 좋을지 모르겠다. –

관련 문제