I have plotted a graph on matplotlib and am trying to create a legend. How do i get matplotlib to create its own legend using the colour markers it has used to differentiate my types of data?
My data is read from a csv file that contains the labels for each type of shape.
My code looks like this:
data_df = pd.DataFrame.from_csv("AllMixedShapes2.csv")
X1 = np.array(data_df[features2].values)
y1 = np.array(data_df[features3].values)
plt.scatter(X1[:, 0],y1, c=y, cmap=plt.cm.Paired)
plt.axis([0, 17, 0, 200])
plt.ylabel("Maximum Angle (Degrees)")
plt.xlabel("Number Of Sides")
plt.title('Original 450 Test Shapes')
plt.legend()
plt.show()
I have tried this:
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles, labels)
But I keep getting this error:
handles, labels = ax.get_legend_handles_labels()
UnboundLocalError: local variable 'ax' referenced before assignment
EDIT:
I tried this:
features_of_labels = ["Circle", "Equilateral Triangle", "Right Angle Triangle",
"Obtuse Triangle", "Acute Triangle", "Square", "Rectangle",
"Parallelogram", "Seal"]
data_df = pd.DataFrame.from_csv("AllMixedShapes2.csv")
X1 = np.array(data_df[features2].values)
y1 = np.array(data_df[features3].values)
l = np.array(data_df[features_of_labels].values)
But i get the following error: KeyError: "['Circle' 'Equilateral Triangle' 'Right Angle Triangle' 'Obtuse Triangle'\n 'Acute Triangle' 'Square' 'Rectangle' 'Parallelogram' 'Seal'] not in index"
However if i change features_of_labels
to header
and header = ["Label"]
it works but prints out every label like shown in the next picture.