df = pd.DataFrame({'n1': [1, 2, 1, 3], 'n2': [1, 3, 2, 1], 'l': ['a', 'b',
    'c', 'd']})
nrof_labels = len(df['l'])
colors = cm.rainbow(np.linspace(0, 1, nrof_labels))
for i, r in df.iterrows():
    ax.plot(r['n1'], r['n2'], 'o', markersize=10, color=colors[i],
        linewidth=0.1, label=r['l'])
ax.set_xlim(0.5, 3.5)
ax.set_ylim(0.5, 3.5)
plt.legend(loc='best')
plt.show()
pandas - scatter plot with different color legend for each point