Placez une bordure autour des points

Je voudrais placer une bordure noire autour des points d’un nuage de points qui sont remplis en fonction des données, en utilisant ggplot2. Aussi, je voudrais éviter d’avoir une entrée de légende pour la bordure noire car elle sera sur chaque point. Fondamentalement, je cherche cette plot, mais avec une bordure noire autour de chaque point.

df <- data.frame(id=runif(12), x=1:12, y=runif(12)) ggplot(df, aes(x=x, y=y))+geom_point(aes(colour=id), size=12) 

l'intrigue que je veux, sauf qu'il n'a pas de frontières autour des points

En bonus, j’aimerais ne pas avoir de légende pour la bordure noire. Mon meilleur essai est:

 df <- data.frame(id=runif(12), x=1:12, y=runif(12)) ggplot(df, aes(x=x, y=y))+geom_point(aes(fill=id, colour="black"), size=12) 

Qui donne:

pas du tout l'intrigue que je veux

Je ne comprends pas pourquoi cela ne me donne pas ce que je veux, et pire (pour mes études en ggplot2) Je ne comprends pas pourquoi il ne semble pas y avoir de couleur de remplissage! De l’aide?

Peut-être que si je peux obtenir le contour et remplir le mappage correctement, je peux utiliser un hack comme celui de la dernière série de chiffres ici pour désactiver la légende.

C’est un peu obscur, mais vous devez utiliser pch > 20 (je pense que 21:25 sont les formes pertinentes): fill contrôle la colour intérieure (u) et la colour contrôle la ligne autour du bord.

 (g0 <- ggplot(df, aes(x=x, y=y))+geom_point(aes(fill=id), colour="black",pch=21, size=5)) 

update : avec les versions récentes de ggplot2 (par exemple, 2.0.0, je ne sais pas à quel point ça marche), le guide par défaut est une barre de couleurs. Besoin de g0 + guides(fill="legend") pour obtenir une légende avec des points comme dans le tracé montré ici. Les ruptures par défaut ont également changé: pour répliquer exactement ce graphe, vous avez besoin de g0 + scale_fill_continuous(guide="legend",breaks=seq(0.2,0.8,by=0.1)) ...

entrer la description de l'image ici

Relatif mais pas identique: comment créer un tracé avec des points personnalisés en R? . La réponse acceptée à cette question utilise la technique de stratification indiquée dans la réponse de @ joran, mais (OMI) la réponse de @jbaums, qui utilise la technique pch=21 , est supérieure. (Je pense que la shape=21 est une alternative, et peut-être même préférable, à pch=21 ).

PS, vous devriez mettre de la colour dehors du mapping ( aes bit) si vous voulez le définir absolument et non pas en fonction de la valeur de certaines variables ...

La première question est un gimme:

 ggplot(df, aes(x=x, y=y)) + geom_point(aes(colour=id), size=12) + geom_point(shape = 1,size = 12,colour = "black") 

Et, oh, vous ne voulez pas une légende supplémentaire. Je pense que ça le fait alors:

entrer la description de l'image ici

J’avais le même problème, mais j’avais aussi besoin d’une solution qui permette la gigue. Pour cela, vous devez utiliser un pch qui est une forme remplie avec une bordure et une fonction grid.edit du paquet gridExtra. En utilisant votre exemple:

 df <- data.frame(id=runif(12), x=1:12, y=runif(12)) ggplot(df, aes(x=x, y=y, fill=id))+geom_point(pch=21, colour="Black", size=12) library(gridExtra) grid.edit("geom_point.points", grep = TRUE, gp = gpar(lwd = 3))