2015-01-09 3 views
2

현재 3 개의 다른 플롯이 각각 별도의 그림으로 저장되어 있습니다. 그러나, 공간 제약에 나는과 같이 서로 뒤에 그 레이어 오프셋 싶습니다 :matplotlib에 오버레이 된 오프셋 플롯 그리기

Example image

나는 비슷한 패턴이 각각의 플롯에 걸쳐 존재 함을 전달하기 위해 노력하고이 멋진 소형 방법 그렇게하는 것. 프로그래밍 방식으로 그 그림을 matplotlib을 사용하여 그려보고 싶습니다. 그러나 저는 일반적인 pyplot 명령을 사용하여 그래프를 어떻게 배열하고 오프셋하는지 잘 모르겠습니다. 어떤 제안이라도 도움이 될 것입니다. 다음 코드는 내가 현재 갖고있는 것의 해골이다.

import numpy as np 
import matplotlib.pyplot as plt 
import seaborn as sns 

window = 100 
xs = np.arange(100) 
ys = np.zeros(100) 
ys[80:90] = 1 
y2s = np.random.randn(100)/5.0+0.5 

with sns.axes_style("ticks"): 
    for scenario in ["one", "two", "three"]: 
     fig = plt.figure() 
     plt.plot(xs, ys) 
     plt.plot(xs, y2s) 
     plt.title(scenario) 
     sns.despine(offset=10) 

답변

4

플롯 할 수동으로 축을 만들고 원하는대로 배치 할 수 있습니다. 여기
enter image description here

같은 플롯을 제공, 내가 수동으로 만든 축을 추가 fig.add_axes를 사용하는 미리 정의 된 그림 객체에 객체

import numpy as np 
import matplotlib.pyplot as plt 
import seaborn as sns 

window = 100 
xs = np.arange(100) 
ys = np.zeros(100) 
ys[80:90] = 1 
y2s = np.random.randn(100)/5.0+0.5 

fig = plt.figure() 
with sns.axes_style("ticks"): 
    for idx,scenario in enumerate(["one", "two", "three"]): 
     off = idx/10.+0.1 
     ax=fig.add_axes([off,off,0.65,0.65], axisbg='None') 
     ax.plot(xs, ys) 
     ax.plot(xs, y2s) 
     ax.set_title(scenario) 
     sns.despine(offset=10) 

을 다음과 같이 접근 방식을 강조 은 예를 수정했습니다. 인수는 새로 생성 된 축의 위치와 크기를 지정합니다 (docs 참조). 또한 축 배경을 투명하게 설정합니다 (axisbg='None').

+0

고마워요! 내 예제 그림이 끔찍했지만, 당신의 방법은 잘 작동합니다. – tlnagy

관련 문제