我正在使用代理艺术家 (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([], [], 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)
这个示例展示了不同颜色和大小的圆,其中绘制的二维线条是白色的(因此使用color="white"
)。如果您不想填充圆,例如,设置markeredgecolor="green"
和markerfacecolor="white"
。
进一步调整
color="white"
仍然会显示线条。使用linewidth=0
将完全隐藏线条。plt.legend
的handletextpad
关键字参数来减少圆圈和标签之间的空间。该值也可以为负,例如handletextpad=-0.3
。seaborn
调色板,可以通过索引调色板来设置单个标记面颜色。例如:markerfacecolor=sns.color_palette("cubehelix", 3)[0]
@punkkat 当向传说中添加补丁(Circle 是其中之一)时,添加的是新创建的矩形补丁,而不是原始补丁本身,新创建的补丁具有完全相同的属性(颜色、阴影、透明度等)。因此,无论传入的图形形状如何,结果都将是传说中的正方形补丁。
给定的简单解决方案(由 @cosmosis 给出)是将线实例传递到传说中,该实例支持任意标记,并且由于标记形状没有限制,因此您可以通过传递任意形状来放置在传说中。
linestyle='none'
。 要应用相同的标记比例,可以取平方根。np.sqrt(msize)
- n1nj4from matplotlib.lines import Line2D
。 - Martin