У меня есть
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])
, что дает мне что-то вроде:
что я и хочу.
Но есть ли способ сделать это без зацикливания всех точек ?? Все остальные ответы для stackoverflow используют cmap
или colormap
, но errorbar
не имеет этих аргументов.