Issue
I'm making a legend for a scatter plot using a proxy artists (http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist) and attempting to make circle-shaped markers.
This is my code:
legend([Circle((0,0), fc='g')], ["Green Circle"])
But when I plot it, the legend doesn't have a circle and instead displays a rectangle...
How do I get the legend to have circle markers?
Solution
If all you are looking for is a circular marker in the legend (as opposed to strictly using proxy artists), then I suggest trying something like:
line1 = Line2D([], [], color="white", marker='o', markerfacecolor="red")
line2 = Line2D([], [], color="white", marker='o', markerfacecolor="green")
line3 = Line2D([], [], color="white", marker='o', markersize=5, markerfacecolor="slategray")
line4 = Line2D([], [], color="white", marker='o', markersize=10, markerfacecolor="slategray")
plt.legend((line1, line2, line3, line4), ('Thing 1', 'Thing 2', 'Thing 3', 'Thing 4'), numpoints=1, loc=1)
This shows you circles of different color and sizes, where the 2D line that is drawn is white (hence color="white"
). If you don't want the circles filled in, for example, set markeredgecolor="green"
and markerfacecolor="white"
.
Further tweaks
- If you don't have a white background, or if the line intersects with the grid in the background,
color="white"
will still show the line.linewidth=0
will completely hide the line. - Use the
handletextpad
keyword argument forplt.legend
to reduce the space between the circle and the label. The value can also be negative, e.g.handletextpad=-0.3
. - If you are using
seaborn
palettes, you can set the individual marker face colors by indexing the palette. E.g.markerfacecolor=sns.color_palette("cubehelix", 3)[0]
Answered By - cosmosis
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.