我正在使用代理艺术家(http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist)为散点图制作图例,并尝试制作圆形标记。
这是我的代码:
legend([Circle((0,0), fc='g')], ["Green Circle"])
但是当我绘制它时,图例没有圆圈而是显示一个矩形......
如何让图例具有圆形标记?
我正在使用代理艺术家(http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist)为散点图制作图例,并尝试制作圆形标记。
这是我的代码:
legend([Circle((0,0), fc='g')], ["Green Circle"])
但是当我绘制它时,图例没有圆圈而是显示一个矩形......
如何让图例具有圆形标记?
如果您要寻找的只是图例中的圆形标记(而不是严格使用代理艺术家),那么我建议您尝试以下操作:
line1 = Line2D(range(1), range(1), color="white", marker='o', markerfacecolor="red")
line2 = Line2D(range(1), range(1), color="white", marker='o',markerfacecolor="green")
line3 = Line2D(range(1), range(1), color="white", marker='o',markersize=5, markerfacecolor="slategray")
line4 = Line2D(range(1), range(1), 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)
这向您显示了不同颜色和大小的圆圈,其中绘制的 2D 线是白色的(因此color="white"
)。如果您不想填充圆圈,例如,设置markeredgecolor="green"
和markerfacecolor="white"
。
进一步的调整
color="white"
仍会显示线条。linewidth=0
将完全隐藏该行。handletextpad
关键字参数 forplt.legend
减少圆圈和标签之间的空间。该值也可以是负数,例如handletextpad=-0.3
。seaborn
调色板,您可以通过索引调色板来设置各个标记面颜色。例如markerfacecolor=sns.color_palette("cubehelix", 3)[0]
@punkkat 添加要添加到图例的补丁(即圆形)时,添加的不是补丁本身,而是创建了一个具有完全相同属性(颜色、阴影、alpha 等)的新矩形补丁。给定补丁。因此,无论传入的形状如何,结果都将是图例中的方形补丁。
@cosmosis 给出的简单解决方案是将线条实例传递给可以支持任意标记的图例,并且由于标记的形状没有限制,因此您可以传递的形状没有限制穿上传奇。