Диаграмма Matplotlib Quiver, соответствующая цвету ключевой метки с цветом стрелки - PullRequest
0 голосов
/ 26 апреля 2019

Использование matplotlib, python3.6.Я пытаюсь создать несколько quiverkeys для сюжета колчана, но с трудом подбираю цвета меток для соответствия определенным стрелкам.Ниже приведена упрощенная версия кода, чтобы показать проблему.Когда я использую один и тот же цвет (0,3, 0,1, 0,2, 1,0) для вектора в точке (1,1) и в качестве «цвета метки» для кнопки-колчана, я вижу 2 разных цвета.

q=plt.quiver([1, 2,], [1, 1],
       [[49],[49]],
       [0],
   [[(0.6, 0.8, 0.5, 1.0 )],
    [(0.3, 0.1, 0.2, 1.0 )]],
       angles=[[45],[90]],
       )
plt.quiverkey(q, .5, .5, 7, r'vector2', labelcolor=(0.3, 0.1, .2, 1),
                      labelpos='S', coordinates = 'figure')

enter image description here

1 Ответ

1 голос
/ 27 апреля 2019

Возможно, вы хотели использовать аргумент color, равный quiver, для установки фактических цветов.

import matplotlib.pyplot as plt

q=plt.quiver([1, 2,], [1, 1], [5,0], [5,5],
             color=[(0.6, 0.8, 0.5, 1.0 ), (0.3, 0.1, 0.2, 1.0 )])
plt.quiverkey(q, .5, .5, 7, r'vector2', labelcolor=(0.3, 0.1, .2, 1),
                      labelpos='S', coordinates = 'figure')

plt.show()

enter image description here

Иначе, аргумент C интерпретируется как значения для сопоставления с цветами в соответствии с цветовой картой по умолчанию. Так как у вас есть только две стрелки, учитываются только первые два значения из 8 чисел в массиве, заданном аргументу C. Но нормализация цветовой карты использует все эти значения, так что она находится в диапазоне от 0,1 до 1,0. Звонок

q=plt.quiver([1, 2,], [1, 1], [5,0], [5,5],
             [(0.6, 0.8, 0.5, 1.0 ), (0.3, 0.1, 0.2, 1.0 )])

, следовательно, эквивалентно

q=plt.quiver([1, 2,], [1, 1], [5,0], [5,5],
             [0.6, 0.8], norm=plt.Normalize(vmin=0.1, vmax=1))

в результате чего цвет первой стрелки будет равен 0,6 в цветовой карте viridis, нормализованной между 0,1 и 1,0, а вторая стрелка - 0,8 в этой цветовой карте.

Это становится очевидным, если мы добавим plt.colorbar(q, orientation="horizontal"):

enter image description here

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