Матплотлиб колчан шкала - PullRequest
7 голосов
/ 06 мая 2011

Я пытаюсь построить несколько стрелок, используя matploblib с функцией колчана. Но я хочу выбрать длину каждой стрелки в отдельности, используя массив.

http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.quiver http://matplotlib.sourceforge.net/examples/pylab_examples/quiver_demo.html

В этих демонстрациях и документации показано, что вы можете изменять масштаб пропорционально единицам (x, y, ширина, высота, xy, дюймы, ...), есть ли способ определить масштаб для каждой стрелки?

Ответы [ 2 ]

10 голосов
/ 06 мая 2011

Указание местоположения и вектора каждой стрелки и длина - это завышенная характеристика колчана.Так что вам нужно изменить данные, которые вы строите.

Если у вас есть векторные поля U и V (те же U и V, что и в ваших примерах), вы можете нормализовать их следующим образом:

N = numpy.sqrt(U**2+V**2)  # there may be a faster numpy "normalize" function
U2, V2 = U/N, V/N

Затем вы можете применить любой массив коэффициентов масштабирования, который вы хотите:

U2 *= F
V2 *= F
0 голосов
/ 07 марта 2019

Если вы хотите иметь некоторое представление об относительных величинах вектора для двух векторов, скажем, x и y, вы можете попробовать это нелинейное масштабирование:

L = np.sqrt(x**2 + y**2)
U = x / L 
V = y / L 
#If we just plotted U and V all the vectors would have the same length since 
#they've been normalized.

m = np.max(L)
alpha = .1 
#m is the largest vector, it will correspond to a vector with 
#magnitude alpha in the quiver plot

S=alpha /(1+np.log(m/L)) 

U1=S*U 

V1=S*V

plt.figure() 
Q = plt.quiver(x,y,U1,V1,scale = 1., units='width') 

qk = plt.quiverkey(Q, 0.9, 0.9, 2, r'$2 \frac{m}{s}$', 
labelpos ='E',coordinates='figure')

Вы можете изменить диапазон векторных величин, увеличив или уменьшив значение альфа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...