2015-03-11 2 views
4

Есть ли способ варьировать длины отдельных стрелок на участке колчана?Vary длина стрел в осях Matplotlib Axes3D.quiver

Я создал сюжет с помощью:

lines_to_draw = list of numpy 3d vectors 
xs, ys, zs = list of coordinates 
us, vs, ws = list of displacements 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
for line in lines_to_draw: 
    ax.plot(line[:,0], line[:,1], line[:,2], color='green' 
ax.quiver(xs, ys, zs, us, vs, ws) 

Похоже, что это (оси выключенный): Quiver plot

Проблема заключается в том, что все стрелки выглядят такими же величину. Эти документы предполагают, что это, вероятно, случай (в частности, length аргумента):

Axes3D.quiver (* арг, ** kwargs) Участок 3D-поле стрелок.

подписи вызова:

колчан (X, Y, Z, U, V, W ** kwargs) Аргументы:

X, Y, Z: X, Y и Z координаты стрелки местоположения

U, V, W: указатель направления, указывающий стрелку. Аргументы могут быть массивные или скаляры, если они могут транслироваться вместе. Аргументы также могут быть замаскированными массивами. Если элемент в любом из аргументов замаскирован, то соответствующий элемент колчана не будет отображаться в .

Ключевое слово аргументов:

длина: [1.0 | float] Длина каждого колчана, по умолчанию 1.0, единица измерения совпадает с осями

arrow_length_ratio: [0.3 | Поплавок] Отношение головы стрелки относительно колчана, по умолчанию 0.3 Любые дополнительные именованные аргументы делегированы LineCollection

Просто для уточнения, величина векторов отличается до 30 раз Таким образом, должна быть очень заметная разница.

+0

Что происходит, когда вы используете аргумент длины? – cphlewis

+0

Он одинаково масштабирует все стрелы, извините, должен был упомянуть об этом. Я больше смотрел на «matplotlib» на Github, и я уверен, что он нормализует каждый вектор '(u_i, v_i, w_i)^T'. –

+1

Вы правы. Вы можете разделить данные по классам длины и «колчану» каждый отдельно. Хотя, глядя на это, это полезно для отображения данных? Разве читатель не может быть смущен между короткими стрелками и стрелками, почти перпендикулярными плоскости изображения? Может быть, вариация цвета? – cphlewis

ответ

4

Это возможно в следующем выпуске MPL, см. Это pull request.

Hack: вы можете отредактировать соответствующие файлы MPL в вашей системе, см. Ответ this.

В качестве альтернативы: выдать команду ax.quiver для каждой стрелки, с индивидуальным атрибутом length. Это не очень эффективно, но в некоторых случаях это может помочь.

+1

Отлично. На самом деле я был человеком, который поднял вопрос, на который ссылался, но его отвлекали, и на самом деле не делали и не отправляли PR. –

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