# Adding a legend to PyPlot in Matplotlib in the simplest manner possible

Adding a legend to PyPlot in Matplotlib in the simplest manner possible :

SOLUTION 1 :

Add labels to each argument in your plot call corresponding to the series it is graphing, i.e. `label = "series 1"`

Then simply add `Pyplot.legend()` to the bottom of your script and the legend will display these labels.

SOLUTION 2 :

Add a `label=` to each of your `plot()` calls, and then call `legend(loc='upper left')`.

Consider this sample (tested with Python 3.8.0):

``````import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 20, 1000)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x, y1, "-b", label="sine")
plt.plot(x, y2, "-r", label="cosine")
plt.legend(loc="upper left")
plt.ylim(-1.5, 2.0)
plt.show()
``````

Slightly modified from this tutorial: http://jakevdp.github.io/mpl_tutorial/tutorial_pages/tut1.html

SOLUTION 2 :

``````fig = plt.figure(figsize=(10,5))
ax.scatter(x=data[:,0],y=data[:,1],label='Data')
plt.plot(data[:,0], m*data[:,0] + b,color='red',label='Our Fitting
Line')
ax.set_ylabel('Rating')
ax.legend(loc='best')
plt.show()
``````

SOLUTION 3 :

You can access the Axes instance (`ax`) with `plt.gca()`. In this case, you can use

``````plt.gca().legend()
``````

You can do this either by using the `label=` keyword in each of your `plt.plot()` calls or by assigning your labels as a tuple or list within `legend`, as in this working example:

``````import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-0.75,1,100)
y0 = np.exp(2 + 3*x - 7*x**3)
y1 = 7-4*np.sin(4*x)
plt.plot(x,y0,x,y1)
plt.gca().legend(('y0','y1'))
plt.show()
``````

However, if you need to access the Axes instance more that once, I do recommend saving it to the variable `ax` with

``````ax = plt.gca()
``````

and then calling `ax` instead of `plt.gca()`.