Я пытаюсь визуализировать модный набор данных MNIST с различными методами уменьшения размеров, и я также хочу прикрепить легенду к полученному изображению с помощью так называемых real_labels, которые сообщают реальное имя метки. Для моды MNIST настоящие этикетки:
real_labels = ['t-shirt','trouser','pullover','dress','coat','sandal','shirt','sneaker','bag','ankle boot']
Я выполняю черчение внутри следующей функции:
def Draw_datasamples_to_figure(X_scaled, labels, axis):
y = ['${}$'.format(i) for i in labels]
num_cls = len(list(set(labels)))
for (X_plot, Y_plot, y1, label1) in zip(X_scaled[:,0], X_scaled[:,1], y, labels):
axis.scatter(X_plot, Y_plot, color=cm.gnuplot(int(label1)/num_cls),label=y1, marker=y1, s=60)
, где X_scaled указывает координаты x и y, метки представляют собой целые числа (0-9) для информации о классе, а ось указывает, в каком окне будет отображаться изображение подплота.
Легенда нарисована с помощью следующей команды:
ax3.legend(real_labels, loc='center left', bbox_to_anchor=(1, 0.5))
Кажется, все работает очень хорошо, пока легенда не прорисована. Как видно из рисунка ниже, вместо цифр от 0 до 9 выбранные цифры в легенде являются произвольными.
Я знаю, что проблема, вероятно, в точечной части, и я должен реализовать ее по-другому, но я надеюсь, что я все еще упускаю что-то простое, что может исправить мою реализацию. Я также не хочу использовать легенду ручной работы, в которой маркеры и имена определены в коде, потому что у меня есть и другие наборы данных с различными классами и реальными именами меток. Заранее спасибо!