В строке ошибок matplotlib, как передать цвет разные точки с разными цветами? - PullRequest
1 голос
/ 18 января 2020

У меня есть

fig, axs = plt.subplots(shape[1], shape[0], figsize=(9, 3 * shape[1]), sharey=True)
    for idx, ax in enumerate(axs.reshape(-1)):

        categorical_labels = ...
        values = ...
        errors = ...
        colours = ...


        ax.errorbar(categorical_labels, values, yerr=errors, fmt='.', ecolor=colours, mfc=colours, mec=colours) 

Это не работает, потому что ecolor, mfc и, mec не принимают список цветов (один цвет для каждой точки) , как только он видит список цветов, он предполагает, что это цвет RGBA. Таким образом, он выдает ошибку:

ValueError: Недопустимый аргумент RGBA: ('lime', 'magenta', 'darkorange', 'cyan', 'cornflowerblue', 'cornflowerblue', 'lime', 'magenta', 'darkorange', 'cyan')

Я могу обойти эту проблему, обведя все точки и нанеся их на график по отдельности:

for i, v in enumerate(values):
    ax.errorbar([categorical_labels[i]], [values[i]], yerr=[errors[i]], fmt='.', ecolor=colours[i], mfc=colours[i], mec=colours[i]) 

, что дает мне что-то вроде: enter image description here

что я и хочу.

Но есть ли способ сделать это без зацикливания всех точек ?? Все остальные ответы для stackoverflow используют cmap или colormap, но errorbar не имеет этих аргументов.

...