Я пытаюсь визуализировать различные алгоритмы обучения многообразия в хорошо известном наборе данных MNIST.Я заменил каждую точку данных на текстовый маркер, сообщающий, какую цифру он действительно представляет.Однако я не могу понять, как добавить легенду, описывающую, какие цвета принадлежат каким цифрам.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import offsetbox
from sklearn import (manifold, datasets, decomposition, ensemble)
import seaborn as sns
digits = datasets.load_digits(n_class=10)
X = digits.data
y = digits.target
n_samples, n_features = X.shape
tsne = manifold.TSNE(n_components=2, random_state=0, perplexity=40)
X_t = tsne.fit_transform(X)
X_t=pd.DataFrame(X_t)
y=pd.DataFrame(y)
XY=pd.concat([X_t,y], axis=1)
XY.columns = ['x', 'y', 'digit']
customPalette=sns.hls_palette(10, l=.7, s=1)
fig, axes = plt.subplots(figsize=(10,10))
axes.set_xlim(XY['x'].min()*0.98,XY['x'].max()*1.02)
axes.set_ylim(XY['y'].min()*0.98,XY['y'].max()*1.02)
for i in range(0,10):
for l, row in XY.loc[XY['digit']==i,:].iterrows():
plt.annotate(int(row['digit']), (row['x'], row['y']),
horizontalalignment='center', verticalalignment='center',
size=10, color=customPalette[i])
plt.title('t-SNE')
В результате на следующем рисунке:
Я хотел бы добавить легенду, аналогичную следующей:
Легенда