Как сделать точечную диаграмму с пустыми кругами в Python?
в Python, с Matplotlib, как можно разбросать график с пустой круги будут построены?  Цель состоит в том, чтобы нарисовать пустые круги вокруг некоторые цветных дисков, уже нанесенных scatter(), чтобы выделить их, в идеале-без необходимости перерисовки цветные круги.
пробовал facecolors=None, но безрезультатно.
5 ответов
С документация скаттера:
Optional kwargs control the Collection properties; in particular:
    edgecolors:
        The string ‘none’ to plot faces with no outlines
    facecolors:
        The string ‘none’ to plot unfilled outlines
попробуйте следующее:
import matplotlib.pyplot as plt 
import numpy as np 
x = np.random.randn(60) 
y = np.random.randn(60)
plt.scatter(x, y, s=80, facecolors='none', edgecolors='r')
plt.show()

Примечание: для других типов участков см. этот пост использование markeredgecolor и markerfacecolor.
будут ли они работать?
plt.scatter(np.random.randn(100), np.random.randn(100), facecolors='none')

или с помощью plot ()
plt.plot(np.random.randn(100), np.random.randn(100), 'o', mfc='none')

вот еще один способ: это добавляет круг к текущим осям, графику или изображению или что-то еще:
from matplotlib.patches import Circle  # $matplotlib/patches.py
def circle( xy, radius, color="lightsteelblue", facecolor="none", alpha=1, ax=None ):
    """ add a circle to ax= or current axes
    """
        # from .../pylab_examples/ellipse_demo.py
    e = Circle( xy=xy, radius=radius )
    if ax is None:
        ax = pl.gca()  # ax = subplot( 1,1,1 )
    ax.add_artist(e)
    e.set_clip_box(ax.bbox)
    e.set_edgecolor( color )
    e.set_facecolor( facecolor )  # "none" not None
    e.set_alpha( alpha )

(круги на картинке сжимаются до эллипсов, потому что imshow aspect="auto" ).
в matplotlib 2.0 есть параметр под названием fillstyle
что позволяет лучше контролировать заполнение маркеров. 
В моем случае я использовал его с errorbars, но он работает для маркеров в целом
http://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.errorbar.html
fillstyle принимает следующие значения: ['full’ |' left’ | 'right’ |' bottom’ | 'top’ | 'none']
есть две важные вещи, которые следует иметь в виду при использовании fillstyle,
1) Если mfc имеет какое-либо значение, оно будет иметь приоритет, следовательно, если вы установили fillstyle в "none", это не вступит в силу. Поэтому избегайте использования mfc в сочетании с fillstyle
2) Вы можете контролировать ширину края маркера (используя markeredgewidth или mew) потому что, если маркер относительно мал и ширина края толстая, маркеры будут выглядеть как заполненные, даже если они не заполнены.
Ниже приведен пример использования errorbars:
myplot.errorbar(x=myXval, y=myYval, yerr=myYerrVal, fmt='o', fillstyle='none', ecolor='blue',  mec='blue')
поэтому я предполагаю, что вы хотите выделить некоторые моменты, которые соответствуют определенным критериям. Вы можете использовать команду Prelude для выполнения второй диаграммы рассеяния высветленных точек с пустым кругом и первого вызова для построения всех точек. Убедитесь, что параметр s достаточно мал, чтобы большие пустые круги охватывали меньшие заполненные.
другой вариант-не использовать scatter и рисовать патчи по отдельности с помощью команды circle/ellipse. Это в библиотек matplotlib.патчи здесь - это пример кода о том, как рисовать прямоугольники кругов и т. д.
