web-dev-qa-db-fra.com

Les marqueurs Matplotlib disparaissent lorsque edgecolor = 'none'

J'essaie de faire un nuage de points de certaines données PCA. Je fais du code assez typique:

plt.plot(pca[:,0], pca[:,1], '.',ms=3,  markerfacecolor = self.colors[k],
            markeredgecolor = 'none')

Je veux qu'il montre juste la couleur du visage du marqueur sans contour. Le problème est que les marqueurs disparaissent complètement lorsque markeredgecolor = 'none'. Lorsque je mets markerfacecolor = 'none' ou une couleur et que je supprime markeredgecolor, cela fonctionne comme prévu.

Je viens de mettre à jour matplotlib, numpy, etc. vers les dernières versions, fonctionnant sur Python 2.7.

Merci de votre aide.

21
Mat Leonard

Je pense que c'est un bug qui a été corrigé il y a quelques mois: https://github.com/matplotlib/matplotlib/pull/598

Quelle que soit la taille de vos marqueurs ou si vous utilisez marker='o' au lieu de '.', ils seront invisibles si vous utilisez markeredgecolor='none'.

Comme solution de contournement, vous pouvez simplement définir les couleurs de bord sur les mêmes que les couleurs de visage.

16
Joe Kington

Dans matplotlib 1.1

>> plt.plot(pca[:,0], pca[:,1], '.', ms=3, markerfacecolor=self.colors[k],
...          markeredgecolor=None)

fonctionne (notez le None au lieu de 'aucun' pour markeredgecolor).

Réglage markeredgewidth=0.0 ou markeredgecolor=self.colors[k] (comme l'a suggéré Joe Kington) devrait également fonctionner.

4
bmu

Essaye ça:

x = np.array(np.random.Rand(10))
y = np.array(np.random.Rand(10))
c = np.arange(len(x))
plt.scatter(x,y, c=c, s=500, cmap = plt.cm.Paired, alpha = 0.5,linewidths=0)

Ou, c'est aussi une bonne option:

plt.scatter(x,y, c=c, s=500, cmap = plt.cm.Paired, alpha = 0.5,edgecolor='face')
4
Gabriela Calvillo