У меня есть следующий график рассеяния, где я определяю разные цвета для ребер и маркеров:
label_colors = [mcolors.to_rgba('rgbkmy'[lbl]) for lbl in list(labels)]
pred_colors = [mcolors.to_rgba('rgbkmy'[lbl]) for lbl in list(preds)]
classes = ['Agents','AI','DB','IR','ML','HCI']
fig, ax = plt.subplots()
scatter = plt.scatter(X_embedded[:, 0], X_embedded[:, 1], c=label_colors, edgecolors=pred_colors, linewidths=2)
legend1 = ax.legend(*scatter.legend_elements(),
loc="lower left", title="Classes")
ax.add_artist(legend1)
if(is_show):plt.show()
К сожалению, scatter.legend_elements()
возвращает пустой список, где, если я изменю его на c=labels
который представляет собой список целых чисел, я могу построить легенду, но затем edgecolors
ломается, потому что edgecolors
требует RGBA
в качестве ввода.
Цель для меня состоит в том, чтобы иметь легенда с цветами, указанными в label_colors,edgecolors
, и что сама метка в легенде будет соответствовать classes
(0-> Агенты и т. д. c.)
Это текущий сюжет (легенда пуста)