2017-12-18 15 views
2

아마도 이것은 이미 다른 곳에서 요청되었지만 대답을 찾을 수 없습니다. 이 경우 미안해.aspect = 'equal'을 설정 한 같은 축 크기를 갖는 서브 플로트

같은 축 크기의 서브 플로트를 얻으려면 어떻게해야합니까? aspect = 'equal'이 필요합니다. 그래서 상대 거리가 정확하게 조절됩니다.

내가

X_A = [0, 0.4, 0.8, 1, 0.2, 0.5, 0.3] 
Y_A = [0.3, 0.8, 0, 1, 0.8, 0.2, 0.9] 

X_B = [0, 0.4, 0.8, 1, 0.2, 0.5, 0.3] 
Y_B = [2, 0, 0.8, 3, 3, 2.1, 0.2] 
fig, axes = plt.subplots(1, 2, figsize=(10,10)) 

ax1 = plt.subplot(121) 
ax1.set_aspect('equal') 
ax1.set_title('Dataset A', fontsize=20) 

ax1.scatter(X_A, Y_A) 

ax2 = plt.subplot(122) 
ax2.set_aspect('equal') 
ax2.set_title('Dataset B', fontsize=20) 

ax2.scatter(X_B, Y_B) 

를 코드를 사용하고 있습니다 나는이 받고 있어요 : enter image description here

가 조정하는 몇 가지 간단한 설정은 또는 어떤 수학이 필요합니까? 축의

+1

부부를 생산

전체 예제. 1) 들여 쓰기가 꺼져 있습니다. 2) 당신은 아무도 당신이 가지고있는 외부 데이터에 의존하지 않는 실행 가능한 예제로 이것을 압축해야합니다. 3)이 문제에 대한 해답은 각 축 객체의 'bbox'와 한계를 검사 한 다음 각 Axes 객체의 한계를 확장하여 다른 객체와 일치시키기 위해 얼마나 많이 계산해야 하는지를 계산하는 것입니다. 그 라인을 따라 무엇인가 시도해 봤니? 어떻게 당신이 원했던 것의 부족 했습니까? –

+0

들여 쓰기 죄송합니다. 문제를 해결할 수있는 간단한 설정이 누락 된 것으로 생각했습니다. 나는 그 예를 생각해 낼 것이다. –

+1

간단한 설정을 원한다해도 문제의 [mcve]를 제공하는 것이 중요합니다. 그러한 실행 가능한 예제 만 있으면 문제를 파악하고 해결 방법을 사람들이 판단 할 수 있습니다 (실제로는 아주 간단한 해결책으로). – ImportanceOfBeingErnest

답변

1
당신은 set_aspectadjustable 인수를 사용하려는 것

,

ax.set_aspect('equal', adjustable="datalim") 

이시키지 않을 것임을 축 상자를 조정할 수 있지만, 오히려 한계.

import matplotlib.pyplot as plt 

X_A = [0, 0.4, 0.8, 1, 0.2, 0.5, 0.3] 
Y_A = [0.3, 0.8, 0, 1, 0.8, 0.2, 0.9] 

X_B = [0, 0.4, 0.8, 1, 0.2, 0.5, 0.3] 
Y_B = [2, 0, 0.8, 3, 3, 2.1, 0.2] 

fig, (ax, ax2) = plt.subplots(1, 2, figsize=(6,6)) 

ax.set_aspect('equal', adjustable="datalim") 
ax.set_title('Dataset A', fontsize=20) 

ax.scatter(X_A, Y_A) 

ax2.set_aspect('equal', adjustable="datalim") 
ax2.set_title('Dataset B', fontsize=20) 

ax2.scatter(X_B, Y_B) 

ax2.autoscale() 

plt.show() 

사물의

enter image description here