полосы ошибок и цветные полосы python

Я хочу построить точечную диаграмму с цветной полосой и данными с погрешностями. Вот мой код:

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(123)

x = np.linspace(0.1, 100, 10)
y = np.linspace(6, 18, 10)
yerr = np.random.random(10)
z = np.linspace(0, 10, 10)

plt.scatter(x, y, s = 20, c = z)
plt.colorbar()
plt.errorbar(x, y, yerr = yerr, fmt = '.')

Вот сюжет: введите здесь описание изображения

Однако планки погрешностей нарисованы синим цветом. Я хочу нарисовать их в соответствии с цветовой шкалой, как я могу это сделать? Например, если точка имеет значение 10, полоса ошибок должна быть нарисована в red.

РЕДАКТИРОВАТЬ

Следуя предложенному ниже ответу, я написал:

cmap = matplotlib.cm.get_cmap('jet')
norm = matplotlib.colors.Normalize(vmin=min(y), vmax=max(y))

plt.scatter(x, y, s = 20, c=z, cmap=cmap)
plt.colorbar()
plt.errorbar(x, y, yerr = yerr, fmt = '.', c=cmap(norm(y)))

Но все же, это не сработало. Какие-либо предложения?

Мне все еще интересно получить ответ на этот вопрос. Кто угодно?


person aloha    schedule 18.10.2015    source источник


Ответы (1)


Вы можете раскрасить свои полосы ошибок с помощью цветовой карты, хотя вы, вероятно, захотите нормализовать значения, которые вы отправляете:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib

np.random.seed(123)

x = np.linspace(0.1, 100, 10)
y = np.linspace(6, 18, 10)
yerr = np.random.random(10)
z = np.linspace(0, 10, 10)

cmap = matplotlib.cm.get_cmap('jet')
norm = matplotlib.colors.Normalize(vmin=min(y), vmax=max(y))

plt.scatter(x, y, s = 20, c=z, cmap=cmap)
plt.colorbar()
plt.errorbar(x, y, yerr = yerr, fmt = '.', c=cmap(norm(y)))
person xnx    schedule 19.10.2015
comment
Хм... какую версию Matplotlib вы используете? - person xnx; 19.10.2015
comment
Версия 1.1.1rc - person aloha; 19.10.2015
comment
Если есть возможность, попробуйте обновить хотя бы до 1.3. В противном случае третий элемент, возвращаемый из plt.errorbar, представляет собой список объектов строки панели ошибок, и вы можете выполнить итерацию по этому списку и установить цвет вручную. - person xnx; 19.10.2015
comment
У меня теперь другая ошибка: ValueError: to_rgba: Invalid rgba arg "[[ ...]]" length of rgba sequence should be either 3 or 4 - person aloha; 20.10.2015
comment
Похоже, вы устанавливаете цвет в свой список цветов вместо одного цвета из этого списка. - person xnx; 21.10.2015
comment
Я скопировал ваш точный код и попытался запустить его. Это не сработало. Он работает на вашем ноутбуке? - person aloha; 21.10.2015