Matplotlib;散点图标记,圆圈内的点

6
我正在使用Matplotlib散点图绘图工具。对于标记,我希望理想情况下是一个圆的轮廓和里面带一个点(外圆清楚地表明有东西在那里,点则更精确)。如果我只是简单地将它绘制两次(一次轮廓,再一次点),就可以实现这一目标。但是,我的图例不正确。所以我的问题是,是否有任何方法可以解决这个问题?或者我正在寻找一个不存在的解决方案吗?
示例代码:
import matplotlib.pyplot as plt

fig1 = plt.figure()
ax1 = fig1.add_subplot(111)


x_data = [0.5, 1, 1.5]
y_data = [0.06, 0.06, 0.01]


ax1.scatter(x_data, y_data, label= 'Example legend entry.', s=80, marker='o', facecolors='none', edgecolors='black')
ax1.scatter(x_data, y_data, label= 'Example legend entry.', s=10, marker='o', color='black')


plt.gcf().subplots_adjust(bottom=0.08, top=0.95, left=0.05, right=0.84)


ax1.legend(loc='center left', bbox_to_anchor=(1, 0.5), fancybox=True, ncol=1, fontsize=17, labelspacing=1)


mng = plt.get_current_fig_manager()
mng.window.showMaximized()

plt.show()

以下是示例图:

Example plot

所以,我希望有像这些标记一样的东西,并且能够在图例中像这样使用它们(不像现在分成两个部分)。

如果需要进一步的信息或澄清,请提出。感谢您提供的任何/所有帮助!

澄清:我不确定我是否足够清楚地解释了我的目标。我知道我可以摆脱其中一个图例,但我想要实现的是单个图例条目与组合标记(即圆圈内有“点”)相结合。如果无法实现,则可以禁用外部圆的图例,但我很想在图例上使用在绘图中使用的标记(这是两个标记的组合)。

3个回答

9
您可以使用类似这样的LaTeX标记:


ax1.scatter(x_data, y_data, label= 'Example legend entry.', s=80, marker=r'$\odot$', facecolors='none', edgecolors='black')

然后只需绘制一次您的图表。

啊,太完美了!这正是我想要的。我一直在寻找是否有“带点圆圈”的标记,但除了 LaTeX 之外,我什么都找不到!非常感谢您的帮助! - Steve

0

你尝试过从圆圈中移除标签吗?我修改了你的代码,使得你第一个绘制较大圆圈的图形没有标签。ax1.scatter(x_data, y_data, s=80, marker='o', facecolors='none', edgecolors='black')

这对我有用,但也许对你不适用?


嘿,感谢回复。我认为我最初没有很好地解释我的目标,所以我添加了一个澄清。基本上,我希望像图形上那样将图例上的两个标记组合起来。因此,在图例上会有一个条目,其中包含一个带有“点”的圆圈标记。 - Steve

0
您可以标记散点图并在图例中仅包含一个:
方法如下:
a_ = ax1.scatter(x_data, y_data, label= 'Example legend entry.', s=80, marker='o', facecolors='none', edgecolors='black')
b_ = ax1.scatter(x_data, y_data, label= 'Example legend entry.', s=10, marker='o', color='black')

ax1.legend([a_],["Example legend entry"] , loc='center left', bbox_to_anchor=(1, 0.5), fancybox=True, ncol=1, fontsize=17, labelspacing=1)

嘿,谢谢回复。那不是我想要实现的。我认为我在原帖中没有很好地解释我的目标,所以我添加了一个澄清。基本上,我想要的是一个图例条目,而不是一个或另一个(或两者分别)标记,标记应该是圆圈中间带有“点”的标记(与绘图中显示的方式相同)。 - Steve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接