Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

creating a matplotlib scatter legend size related

I am looking for a way to include a (matplotlib) legend that describe the size of points in a scatter plot, as this could be related to another variable, like in this basic example:

import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
a2 = 400*np.random.rand(N)

plt.scatter(x, y, s=a2, alpha=0.5)
plt.show()

(inspired from: http://matplotlib.org/examples/shapes_and_collections/scatter_demo.html)

so in the legend there would be ideally few spots corresponding to sizes 0-400 (the a2 variable), according to s descriptor in scatter.

like image 876
gluuke Avatar asked Jun 11 '14 13:06

gluuke


People also ask

How do you change the size of a legend in Python?

To change the default size of legend text, we use rc() method and pass a keyword argument fontsize. To add a title to the plot, we use title() function. To add label at x-axis, we use xlabel() function. To add label at y-axis, we use ylabel() function.

How do I change the legend box size in Matplotlib?

To place a legend on the figure and to adjust the size of legend box, use borderpad=2 in legend() method.


1 Answers

Use .legend_elements("sizes"):

import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
a2 = 400*np.random.rand(N)

sc = plt.scatter(x, y, s=a2, alpha=0.5)
plt.legend(*sc.legend_elements("sizes", num=6))
plt.show()

enter image description here

like image 124
ImportanceOfBeingErnest Avatar answered Oct 02 '22 23:10

ImportanceOfBeingErnest