2016-10-01 7 views
0

У меня есть четыре 3 * 3 матрицы:Turning 4 метрических координат вектора в векторе поле

X1=[[2.276840271621883, 2.329662596474333, 2.3633290819729527], [2.276840271621883, 2.329662596474333, 2.3633290819729527], [2.276840271621883, 2.329662596474333, 2.3633290819729527]] 
X2=[[2.2698145746531786, 2.3308266405107805, 2.3594316100497643], [2.2698145746531786, 2.3308266405107805, 2.3594316100497643], [2.2698145746531786, 2.3308266405107805, 2.3594316100497643]] 
Y1=[[48.832151066337865, 48.84935494957576, 48.86990145209316], [48.832151066337865, 48.84935494957576, 48.86990145209316], [48.832151066337865, 48.84935494957576, 48.86990145209316]] 
Y2=[[48.83251302946139, 48.85024866127781, 48.86928223168673], [48.83251302946139, 48.85024866127781, 48.86928223168673], [48.83251302946139, 48.85024866127781, 48.86928223168673]] 

Я хотел бы создать векторное поле, содержащее 9 векторов, идущих из

(X1[i][j],Y1[i][j]) to (X2[i][j],Y2[i][j]) 
these are coordinates 

У меня есть пробовал использовать колчан, но у меня есть проблема измерения.

+0

Может вы приводите пример ожидаемого результата? На данный момент я нахожу проблему нечетко сформулированной. PS Когда вы приводите пример, постарайтесь не использовать поплавки. Приведите примеры с символическими переменными или простыми целыми числами. –

+0

Я хотел бы иметь двумерный граф с векторами в нем (векторы, имеющие свои координаты, определенные как указано в сообщении): i идет от 1 до 3 и j идет от 1 до 3: например, векторное поле стиля колчана. –

+0

Хорошо, понял тебя сейчас. Имейте в виду, что предоставленные вами матрицы имеют ранг 1, потому что строки в каждой матрице идентичны, поэтому вы можете увидеть только 3 стрелки, если вы построите их, используя предоставленный мной ответ, хотя 9 (они перекрываются). –

ответ

0

Если вы хотите, чтобы построить набор стрел с помощью quiver функции Matplotlib в, которые начинаются в точках Pi = (X1i, Y1i) и «конец» в точках Qi = (X2i, Y2i), вы называете quiver как это:

# creating demo data 
X1, X2, Y1, Y2 = [ np.random.random_integers(0, 9, (2,2)) for _ in range(4) ] 
plt.quiver(X1, Y1, (X2 - X1), (Y2 - Y1), angles='xy', scale=1, scale_units='xy') 

Примечание добавленные аргументы в позвоните по номеру quiver. Они обеспечивают, чтобы стрелки начинались и заканчивались в предоставленных координатах данных. Форма для X1 и другие 3 переменные, определенные здесь, это (2, 2), что было сделано только для иллюстрации того, что quiver может работать с двумерными массивами. Вы можете сделать форму (3, 3) в соответствии с вашим примером.

Для целей визуализации и сделать пункт более ясным, я добавил некоторые маркеры в начале и в конце координаты:

plt.plot(X1.ravel(), Y1.ravel(), 'ro ') 
plt.plot(X2.ravel(), Y2.ravel(), 'bx ') 

что приводит к этой цифре:

quiver arrows from begin to end coordinates

+0

Проблема в том, что когда я использую список для X1, X2, Y1, Y2, он говорит: неподдерживаемый тип операндов для -: 'list' и 'list'. Как преобразовать списки/матрицу, чтобы сделать их колчанами? –

+0

@ElliottOhayon преобразует ваши списки в массивы numpy, которые позволяют вам производить поэлементное вычитание, которое используется в показанном здесь вызове на колчан (вычитание списка из списка приводит к описанию ошибки, а не к массивам numpy). –

 Смежные вопросы

  • Нет связанных вопросов^_^