Lorsque j'utilise ggplot, je peux définir shape
sur 21-25 pour obtenir des formes ayant des paramètres indépendants pour les couleurs internes (fill
) et bordures (col
), comme suit:
df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y)) +
geom_point(aes(fill=id, size=id), colour="black", shape=21)
Cependant, je n'arrive pas à comprendre comment contrôler l'épaisseur des contours de la forme, soit en les définissant de manière absolue, soit en tant que mappage esthétique. Je remarque que si je définis une valeur lwd
, elle remplace l’esthétique size
:
ggplot(df, aes(x=x, y=y)) +
geom_point(aes(fill=id, size=id), colour="black", shape=21, lwd=2)
Comment contrôler l'épaisseur de la bordure?
À partir de la version 2.0.0 de ggplot2 , il existe un argument pour contrôler l'épaisseur de la bordure du point. Du NEWS.md
fichier:
geom_point () obtient une esthétique du trait qui contrôle la largeur de bordure des formes 21-25 (# 1133, @SeySayux). la taille et la course sont additives, donc un point de taille = 5 et de course = 5 aura un diamètre de 10mm. (# 1142)
Ainsi, la solution correcte à ceci est maintenant:
df <- data.frame(id=runif(12), x=1:12, y=runif(12))
ggplot(df, aes(x=x, y=y)) +
geom_point(aes(fill=id, size=id), colour="black", shape=21, stroke = 2)
Cela semble un peu compliqué mais vous pouvez ajouter un ensemble de "arrière-plan" avec la taille définie pour le mappage esthétique plus une petite constante à agrandir la bordure des points. Jouez avec la constante pour obtenir la largeur de bordure souhaitée.
Vous devrez également désactiver la légende de taille pour empêcher l'affichage de la légende sur le graphique ...
ggplot(df, aes(x=x, y=y)) +
geom_point(aes(size=id+0.5), colour="black" , show_guide = FALSE )+
scale_size( guide = "none" )+
geom_point(aes(fill=id, size=id), colour="black", shape=21)
Une autre solution consiste à créer le tracé dans R, puis à l'exporter dans un fichier .svg. La largeur de raie peut ensuite être modifiée à l'aide d'un logiciel d'édition de graphiques vectoriels (par exemple, Inkscape). Cette méthode est particulièrement utile lorsque les points de données se chevauchent.