En Python, avec Matplotlib, comment tracer un nuage de points avec des cercles vides ? Le but est de dessiner des cercles vides autour de certains des disques colorés déjà tracés parscatter()
, de manière à les mettre en évidence, idéalement sans avoir à redessiner les cercles colorés.
J'ai essayé facecolors=None
, en vain.
python
matplotlib
geometry
scatter-plot
scatter
Eric O Lebigot
la source
la source
Réponses:
De la documentation pour scatter:
Essayez ce qui suit:
Remarque: pour d'autres types de graphiques, consultez cet article sur l'utilisation de
markeredgecolor
etmarkerfacecolor
.la source
facecolors=None
ne fonctionne pas, ce qui m'a trébuché.markerfacecolor='none'
, c'est comme ça maintenant.markerfacecolor='none'
essayez d'ajoutermarkeredgewidth=1.0
%matplotlib inline
etimport matplotlib.pyplot as plt
, puis en définissant Seaborn comme le traçage par défaut parimport seaborn as sns; sns.set()
Cela fonctionnerait-il?
ou en utilisant plot ()
la source
plot
place descatter
scatter
, vous devez spécifieredgecolors
commeedgecolors='r'
. Sinon, les cercles disparaissent. Voir iciVoici une autre façon: cela ajoute un cercle aux axes, au tracé ou à l'image actuels ou autre:
(Les cercles dans l'image sont écrasés en ellipses parce que
imshow aspect="auto"
).la source
Dans matplotlib 2.0, il existe un paramètre appelé
fillstyle
qui permet un meilleur contrôle sur la façon dont les marqueurs sont remplis. Dans mon cas, je l'ai utilisé avec des barres d'erreur mais cela fonctionne pour les marqueurs en général http://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.errorbar.htmlfillstyle
accepte les valeurs suivantes: ['full' | «gauche» | «droite» | «bas» | «top» | 'aucun']Il y a deux choses importantes à garder à l'esprit lors de l'utilisation
fillstyle
,1) Si mfc est défini sur n'importe quel type de valeur, il sera prioritaire, par conséquent, si vous définissez fillstyle sur 'none', cela ne prendrait pas effet. Évitez donc d'utiliser mfc en conjonction avec fillstyle
2) Vous pouvez contrôler la largeur du bord du marqueur (en utilisant
markeredgewidth
oumew
) car si le marqueur est relativement petit et la largeur du bord est épaisse, les marqueurs auront l'air remplis même s'ils ne le sont pas.Voici un exemple utilisant des barres d'erreurs:
la source
Basez-vous sur l'exemple de Gary Kerr et comme proposé ici, on peut créer des cercles vides liés à des valeurs spécifiées avec le code suivant:
la source
.scatter()
n'a pas fonctionné. Pour le contexte, j'appliquais également une palette de couleurs (c=z, cmap='jet'
).Je suppose donc que vous voulez souligner certains points qui correspondent à certains critères. Vous pouvez utiliser la commande de Prelude pour faire un deuxième nuage de points des points surlignés avec un cercle vide et un premier appel pour tracer tous les points. Assurez-vous que le paramètre s est suffisamment petit pour que les plus grands cercles vides entourent les plus petits remplis.
L'autre option consiste à ne pas utiliser de dispersion et à dessiner les patchs individuellement à l'aide de la commande cercle / ellipse. Ceux-ci sont dans matplotlib.patches, voici un exemple de code sur la façon de dessiner des rectangles de cercles, etc.
la source