Matplotlib;散点图标记,圆内点

时间:2015-10-15 14:36:30

标签: python matplotlib plot python-3.4

我使用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 个答案:

答案 0 :(得分:4)

您可以使用乳胶标记:

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

然后只绘制一次图表。

答案 1 :(得分:0)

您是否尝试过从圆圈中删除标签?我使用了改变你的代码,以便你的第一个较大的圆圈图没有标签。 ax1.scatter(x_data, y_data, s=80, marker='o', facecolors='none', edgecolors='black')

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

答案 2 :(得分: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)