Home > database >  How to add any geom_point shapes to ggplot legend?
How to add any geom_point shapes to ggplot legend?

Time:02-02

I make a heatmap within ggplot that looks something like that:

set.seed(1)
n <- 100
df <- data.frame(x= rnorm(n), y= rnorm(n), z= rnorm(n))
df$z[1:20] <- NA
ggplot()  
  geom_point(data= subset(df, !is.na(z)), mapping= aes(x, y, col= z))  
  geom_point(data= subset(df, is.na(z)), mapping= aes(x, y), col= "black", shape= 4)

Heatmap

Here the points of the scatterplot change colours depending on values in z. Further, I added black crosses (shape 4) to visualize missings in z. I want to add the same x as in the plot to the legend saying missing above it. How can we do this?

CodePudding user response:

I'd actually put the overall command in the same geom_point function using the shape parameter and then manually set the parameters with scale_shape_manual:

ggplot(df)  
  geom_point(aes(x, y, colour = z, shape = is.na(z)))  
  scale_shape_manual(name = "Missing values", values=c(16, 4))

enter image description here

  •  Tags:  
  • Related