我正在使用代理艺术家制作散点图的图例(http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist)形状的标记。matplotlib图例圆圈标记
这是我的代码:
legend([Circle((0,0), fc='g')], ["Green Circle"])
但是,当我绘制它,传说没有一个圆圈,而是显示一个矩形...
如何获得传说有圆圈标记?
我正在使用代理艺术家制作散点图的图例(http://matplotlib.sourceforge.net/users/legend_guide.html#using-proxy-artist)形状的标记。matplotlib图例圆圈标记
这是我的代码:
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
关键字参数为plt.legend
来减少圆圈和标签之间的空间。该值也可以是负数,例如handletextpad=-0.3
。seaborn
调色板,则可以通过对调色板编制索引来设置各个标记的脸部颜色。例如。 markerfacecolor=sns.color_palette("cubehelix", 3)[0]
@punkkat当添加的补丁(这是圆)被添加到一个图例,它是不被添加了补丁本身,而是一种新的矩形贴剂具有完全相同的属性来创建(颜色,阴影,alpha等)的给定补丁。因此,无论传入的形状如何,结果都将成为图例中的方块。
由@cosmosis提供的简单解决方案是将线条实例传递给图例,该图例可以支持任意的标记,并且由于对标记的形状没有限制,所以对形状没有限制可以通过传说。
谢谢 - 这工作!只是好奇而且想法为什么其他方法不起作用? – punkkat 2012-07-11 01:16:35
对于如何使用代理艺术家(例如matplotlib.patches.Circle)来创建图例键而不考虑标记类型的问题,这并不完全是对问题的回答。 – ktavabi 2017-02-25 07:31:13
不,OP问“我如何让图例有圆形标记?”他们最初的做法是使用代理艺术家。 @pelson在他们的回答中说,这个解决方案的好处是修改标记非常容易:只需使用以下表格即可:https://matplotlib.org/api/markers_api.html – Emiel 2018-02-25 17:19:59