2017-07-24 3 views
0

Ma question est quelque peu liée à this thread mais j'aimerais effectivement avoir la bordure noire pour chaque symbole puisque j'ai des instances où les symboles se chevauchent et je pense qu'avoir la frontière aiderait. Cependant, j'ai couleur et forme basé sur une variable à l'intérieur de l'esthétique dans geom_point donc la solution d'utiliser shape = 21 et color = NA ne résout pas tout à fait mon problème ici: je veux des symboles remplis avec la couleur basée sur un variable et formée en fonction d'une autre variable. Est-ce que cela peut être fait? Ou devrais-je aborder cela différemment?Gardez la bordure noire des symboles lorsque vous dessinez des points de couleur et de forme en fonction de variables sur une carte (geom_point)

df <- data.frame("lon"= c(-95.350278, -95.257593, -104.987625, -104.998113), 
      "lat"= c(29.752778, 29.733726, 39.751184, 39.704005), 
      "type"= c("aa", "bb", "aa", "bb"), 
      "mean"= c(5.369, 3.476, 7.857, 2.356)) 

states<-map_data("state") 

mymap<- ggplot(data = states) + 
geom_polygon(aes(x = long, y = lat, group = group), fill=NA, color = "black") + 
coord_fixed(1.3) + 
guides(fill=FALSE)+ 
geom_point(data=df, aes(x=lon, y=lat, color=mean, shape=type),size=5, alpha=0.8)+ 
scale_colour_gradient(low = "royalblue4", high = "red")+ 
theme_bw()+ 
theme(legend.position = "right", 
axis.text = element_blank(),axis.line = element_blank(), 
axis.ticks = element_blank(),panel.border = element_blank(), 
panel.grid = element_blank(),axis.title = element_blank(), 
plot.title = element_text(hjust=0.5, size=14, face="bold")) 

print(mymap) 

Ma carte:

screen

Merci pour le temps de tout le monde et suggestions.

Répondre

0

Vous devez utiliser "fill" pour colorier les formes, puis définir la "couleur" en noir pour obtenir une bordure autour d'eux.

mymap <- ggplot(data = states) + 
    geom_polygon(aes(x = long, y = lat, group = group), fill = NA, color = "black") + 
    coord_fixed(1.3) + 
    geom_point(data = df, aes(x = lon, y = lat, fill = mean, shape = type), color = "black", size=5, stroke = 2) + 
    scale_fill_gradient(low = "royalblue4", high = "red") + 
    scale_shape_manual(values = c(24,21)) + 
    theme_bw() + 
    theme(legend.position = "right", 
     axis.text = element_blank(), axis.line = element_blank(), 
     axis.ticks = element_blank(), panel.border = element_blank(), 
     panel.grid = element_blank(), axis.title = element_blank(), 
     plot.title = element_text(hjust = 0.5, size = 14, face = "bold")) 

enter image description here

+0

Merci pour la solution rapide! – silver