Как установить масштабирование длины quiverkey с данными xy в matplotlib? - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь установить абсолютную quiverkey длину стрелки, соответствующую определенной длине стрелки моих quiver данных.Может ли кто-нибудь объяснить мне, как работает аргумент quiverkey U или, по крайней мере, как его масштабировать для моих нужд?

Фон

Версия Python: 3.6.5

версия matplotlib: 3.0.0

Минимальный пример

Я немного изменил пример с: https://matplotlib.org/gallery/images_contours_and_fields/quiver_simple_demo.html#sphx-glr-gallery-images-contours-and-fields-quiver-simple-demo-py

import matplotlib.pyplot as plt
import numpy as np

X = np.arange(-10, 11, 2)
Y = np.arange(-10, 11, 2)
U, V = np.meshgrid(X, Y)

# calculate length of each arrow
data_arrow_length = np.abs(np.sqrt(np.square(U[:]) + np.square(U[:])))

# set displayed arrow length for longest arrow
displayed_arrow_length = 2

# calculate scale factor for quiver
scale_factor = np.max(data_arrow_length)/displayed_arrow_length

# mysterious arrow length for quiverkey
quiverkey_length = 200

fig, ax = plt.subplots()
q = ax.quiver(X, Y, U, V, pivot='middle',
              units='xy', width=0.1,
              scale=scale_factor, scale_units='xy')
ax.quiverkey(q, X=0.3, Y=1.1, U=quiverkey_length,
             label='Quiver key, length = 10', labelpos='E')

plt.show()

Таким образом, я могу управлять максимальной длиной стрелки, отображаемой с помощью quiver, используя displayed_arrow_length.В этом примере максимальная data_arrow_length составляет прибл.14 и отображается с длиной стрелки 2 на основе данных xy.

Проблема

Если я запусту приведенный выше пример, я получу:

Small plot

Однако, если я увеличу окно рисунка до максимума, я получу:

Large plot

quiverkey длина стрелки не масштабируется с моими quiver стрелками, и мне пришлось использовать случайное большое число, чтобы quiverkey_length появилось в целом.

Вопрос

Iхотел бы установить длину стрелки quiverkey на конкретное значение, отображаемое с помощью quiver, например, 10. Однако он не масштабируется с данными вообще.Как мне этого добиться?

1 Ответ

0 голосов
/ 20 марта 2019

Похоже, что это была ошибка в matplotlib, которая была исправлена.

связанная проблема github

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