Ошибка недопустимого аргумента RGBA при указании списка цветов для панели ошибок

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

пример

Я пробую этот код:

ax.errorbar([450.,500.], [4,5] , xerr = ([20.,15.],[20.,15.]), fmt ='o',color=['r','b'], ecolor = ['r','b'],ms=4, capsize=4,)

но я получаю следующую ошибку. Что я делаю неправильно?

  238         # float)` and `np.array(...).astype(float)` all convert "0.5" to 0.5.
    239         # Test dimensionality to reject single floats.
--> 240         raise ValueError("Invalid RGBA argument: {!r}".format(orig_c))
    241     # Return a tuple to prevent the cached value from being modified.
    242     c = tuple(c.astype(float))

ValueError: Invalid RGBA argument: ['r', 'b']

person Booleanname    schedule 08.04.2021    source источник
comment
Чего вы намеревались достичь, установив для атрибута цвета панели ошибок значение ['r', 'b']?   -  person mkrieger1    schedule 08.04.2021
comment
Я бы хотел, чтобы шкала ошибок для каждой точки имела разный цвет. Если я сделаю color = 'blue', все будет нормально.   -  person Booleanname    schedule 08.04.2021
comment
Я добавил изображение того, к чему стремлюсь   -  person Booleanname    schedule 08.04.2021


Ответы (1)


Мне кажется, вам придется добавлять их в сюжет по одной

import numpy as np
x = np.array([450., 500., 550., 600.])
y = np.array([4, 5, 4.5, 6])
xerr = np.array([[20.,15.],[20.,15.], [10.,25.], [12.,18.]])
color = 'rbyg'
for i in range(len(x)):
    plt.gca().errorbar(x[i], y[i], xerr=xerr[i].reshape(2, -1),
                        fmt ='o',
                        color=color[i%len(color)],
                        ecolor=color[i%len(color)],
                        ms=4,
                        capsize=4)
plt.show()

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

person Martí    schedule 08.04.2021
comment
Деталь i%len(color) заставит его циклически повторять цвета, если точек больше, чем цветов. - person Martí; 08.04.2021
comment
отлично, спасибо! это работает! - person Booleanname; 08.04.2021
comment
отлично, было бы неплохо, если бы вы могли задать вопрос в соответствии с ответом :) спасибо! - person Martí; 09.04.2021