R 根据地图上的变量(几何点)绘制点的颜色和形状时,保持符号的黑色边框

R 根据地图上的变量(几何点)绘制点的颜色和形状时,保持符号的黑色边框,r,ggplot2,aesthetics,R,Ggplot2,Aesthetics,我的问题有点像,但我希望每个符号都有黑色边框,因为我有一些符号重叠的例子,我认为有边框会有所帮助。然而,我在geom_point的美学中有一个基于变量的颜色和形状,因此使用shape=21和color=NA的解决方案并不能完全解决我的问题:我希望填充符号的颜色基于一个变量,形状基于另一个变量。 这能做到吗?或者我应该用另一种方式来处理这个问题 df <- data.frame("lon"= c(-95.350278, -95.257593, -104.987625, -104.998113

我的问题有点像,但我希望每个符号都有黑色边框,因为我有一些符号重叠的例子,我认为有边框会有所帮助。然而,我在geom_point的美学中有一个基于变量的颜色和形状,因此使用shape=21和color=NA的解决方案并不能完全解决我的问题:我希望填充符号的颜色基于一个变量,形状基于另一个变量。 这能做到吗?或者我应该用另一种方式来处理这个问题

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)
df您需要使用“填充”为形状着色,然后将“颜色”设置为黑色,以便在形状周围设置边框

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"))

mymap感谢您的提示解决方案!