Add legend to scatter chart

This question has been asked on SO, but I want to find a clearer solution.

Given that X is 100x2 data and the labels are a label vector (1 to 9), I draw a scatter plot as follows:

pl.scatter(X[:,0], X[:,1], c = labels)
pl.show()

enter image description here

How to add a legend to explain colors in only one line of code? Other solutions print each label separately:

a = pl.scatter(X1[:,0], X1[:,1], color = "red")
b = pl.scatter(X2[:,0], X2[:,1], color = "green")
c = pl.scatter(X3[:,0], X3[:,1], color = "blue")
pl.legend((a,b,c), ("line 1", "line 2", "line 3")
pl.show()
+4
source share
2 answers

Just name each plot and call legend () like you :)

plt.scatter(x1,y1,label=str(pointset1))
plt.scatter(x2,y2,label=str(pointset2))
plt.scatter(x3,y3,label=str(pointset3))

plt.legend(loc='upper right', numpoints=1, ncol=3, fontsize=8, bbox_to_anchor=(1,1))
plt.show()
+1
source

You can create a dummy scatter plot with the desired legend as follows:

pl.scatter(X[:,0], X[:,1], c = labels)

for item in labels:
    #dummy plot just to create the legend
    pl.scatter([], [], c = item, label = item)
#loc = 0 is for the best position of the legend
#scatterpoints = 1 will only show one point in the legend instead of multiple points
plt.legend(loc = 0, scatterpoints = 1)
pl.show()
+1
source

Source: https://habr.com/ru/post/1536677/


All Articles