2014-06-08 2 views
0

하나의 떨림 음모에 두 개의 벡터 필드를 그려야합니다. 이미 작동 중입니다. 각 점에 대해 서로 다른 색의 벡터가 두 개 있습니다. 이제 문제는 스케일링이 동일하지 않다는 것입니다. 첫 번째 필드 (sol)의 벡터 (1,0)가 필드 2의 (1,0)으로 다른 길이로 표시됩니다 (res).python pyplot.quiver : 두 개의 중첩 된 벡터 필드의 크기 조절

떨림을의 (1,0)에서 (1,0)을 sol으로 할 수 있도록 양쪽 필드를 같은 배율로 플롯하도록하려면 어떻게해야합니까?

내 코드 :

import numpy as np 
from matplotlib import pyplot as plt 

#res and sol are two vector fields with dimension (ny, nx ,2) 

step=3 #not all vectors should be plotted. Just every third one (in x and y direction) 

X,Y = np.meshgrid(np.arange(0,nx,step), np.arange(0,ny,step))    
Q=plt.quiver(X,Y,sol[::step,::step,0], sol[::step,::step,1], color='r')  
W=plt.quiver(X,Y,res[::step,::step,0], res[::step,::step,1], color='b') 
plt.quiverkey(Q, 0.4, 0.15, 1, r'text1', labelpos='S') 
plt.quiverkey(W, 0.6, 0.15, 1, r'text2', labelpos='S') 
plt.show() 
+0

환영합니다! 좀 더 명확하게 할 수 있습니까? 코드 스 니펫에는 정의되지 않은 값이 있습니다 (self.field_size_x, self.field_size_y, step, sol 및 res). 또한, arange 함수는 스테핑 (arange (self.field_size_x) [:: step] 및 arange (0, self.field_size_x, 2)가 동일 함) 옵션을 제공합니다. – Emilien

답변

1

당신은 두 가지 해결책이 있습니다

  1. 입력 데이터를 정상화하고
  2. 데이터의 크기를 조절하는 방법 떨림 텔 확장을

해결 방법 2 (가장 빠름) :

Q=plt.quiver(X,Y,sol[::step,::step,0], sol[::step,::step,1], color='r', scale=1) 
W=plt.quiver(X,Y,res[::step,::step,0], res[::step,::step,1], color='b', scale=1) 

스케일 값을 조정할 수 있지만 예상 값을 얻으려면 양쪽 값에서 동일한 값을 유지해야합니다. This thread이 도움이되었지만, 귀하의 경우에는 각 떨림에 동일한 척도를주는 것이 과도하지 않다고 생각합니다.