Question

En Python, avec Matplotlib, comment un nuage de points avec vide cercles tracer? Le but est de dessiner des cercles vides autour de certains des disques colorés déjà tracés par scatter(), afin de les mettre en évidence, idéalement sans avoir à redessiner les cercles colorés.

J'ai essayé facecolors=None, en vain.

Autres conseils

Would ces travaux?

plt.scatter(np.random.randn(100), np.random.randn(100), facecolors='none')

exemple image

ou en utilisant plot ()

plt.plot(np.random.randn(100), np.random.randn(100), 'o', mfc='none')

exemple image

Voici une autre façon: cela ajoute un cercle aux axes en cours, parcelle ou image ou que ce soit:

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 )

text alt

(Les cercles de l'image s'écrasa à des ellipses parce que imshow aspect="auto").

Dans matplotlib 2.0 il y a un paramètre appelé fillstyle ce qui permet un meilleur contrôle sur les marqueurs chemin sont remplis. Dans mon cas, je l'ai utilisé avec errorbars mais il fonctionne pour les marqueurs en général http://matplotlib.org/api/_as_gen/matplotlib.axes. Axes.errorbar.html

fillstyle accepte les valeurs suivantes: [ « full » | « Left » | « Droit » | « Bottom » | « Top » | « None »]

Il y a deux choses importantes à garder à l'esprit lorsque vous utilisez fillstyle,

1) Si mfc est réglé sur une sorte de valeur, il est prioritaire, donc, si vous avez fait ensemble FillStyle « none » il ne serait pas en vigueur. Donc, évitez d'utiliser mfc conjuntion avec FillStyle

2) Vous pouvez contrôler la largeur du bord de marqueur (en utilisant markeredgewidth ou mew) parce que si le marqueur est relativement faible et le bord de largeur est épaisse, les marqueurs ressembleront remplis, même si elles ne sont pas.

Voici un exemple en utilisant errorbars:

myplot.errorbar(x=myXval, y=myYval, yerr=myYerrVal, fmt='o', fillstyle='none', ecolor='blue',  mec='blue')

Je suppose que vous voulez mettre en évidence quelques points qui correspondent à certains critères. Vous pouvez utiliser la commande de Prélude à faire une deuxième diagramme de dispersion des points hightlighted avec un cercle vide et un premier appel à tracer tous les points. Assurez-vous que le paramter s est suffisamment petit pour les grands cercles vides pour entourer les plus petits remplis.

L'autre option consiste à ne pas utiliser la dispersion et en tirer les plaques individuellement à l'aide de la commande cercle / ellipse. Ceux-ci sont en matplotlib.patches, ici est un code exemple sur la façon de dessiner des cercles rectangles etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top