overlapping colors in ggplot geom_point

33 Views Asked by At

I was looking to plot some points colored following 2 variables and overly colors. thanks to this post, I have a close result like below

library(ggplot2)
data=data.frame(x=1:4,y=1:4,var1=c(1,0,0,1),var2=c(0,1,NA,1))
ggplot(data,aes(x,y))+
  geom_point(aes(color=as.factor(var1)),alpha=0.5,size=3)+
  geom_point(aes(colour=as.factor(var2)),alpha=0.5,size=1)

my aim is to color var1 with grey/yellow 0/1 var2 in grey/blue 0/1 and have a green overlap (same size)

Created on 2024-01-21 with reprex v2.0.2

1

There are 1 best solutions below

0
TarJae On

Something like this:

library(tidyverse)

data_long <- data %>% 
  pivot_longer(c(var1, var2)) %>% 
  mutate(color = case_when(
    name == "var1" & value == 1 ~ "yellow",
    name == "var2" & value == 1 ~ "blue",
    .default = "grey")
    )

ggplot(data_long, aes(x, y, color = color))+
  geom_point(data = data_long %>% 
               filter(name == "var1"), alpha = 0.5, size = 9) +
  geom_point(data = data_long %>% 
               filter(name == "var2"), alpha = 0.9, size = 3) +
  scale_color_identity(guide = 'legend') 

enter image description here