循环内带有空圆的散点图

scatter plot with empty circle within loop

我正在寻找一种简单而优雅的方法来制作具有多个数组的散点图,使用空圆圈作为标记颜色应该自动选择。 例如,我可以很容易地制作一个带有实心圆的图:

a = {'1': np.random.rand(10), '2': np.random.rand(10), '3': np.random.rand(10)}
fig,ax = plt.subplots()
for y in ['2', '3']:
    ax.scatter(a[y], a['1'], label=y)

如果我想使用 kwargs facecolor="none",标记就会消失。我需要以某种方式自动将颜色分配给 edgecolor

通过C0C1等手动分配边缘颜色,遵循默认调色板:

a = {'1': np.random.rand(10), '2': np.random.rand(10), '3': np.random.rand(10)}
fig,ax = plt.subplots()
for i, y in enumerate(['2', '3']):
    ax.scatter(a[y], a['1'], label=y, facecolor='none', edgecolor=f'C{i}')

您还可以将字符串 o 用作 marker:

a = {'1': np.random.rand(10), '2': np.random.rand(10), '3': np.random.rand(10)}
fig,ax = plt.subplots()
for y in ['2', '3']:
    ax.scatter(a[y], a['1'], label=y, marker='$o$')