oli.m  
                
               
                 
                 
              
                  
                    November 16, 2021, 12:05am
                   
                   
              1 
               
             
            
              I would like to automatically draw a vertical line at the intersect of two geom_density() plots in ggplot() within  geom_vline()?
data %>% 
  ggplot(aes(score, fill = actual_given_therapy)) +
  geom_density(alpha = 0.5) +
  geom_vline(xintercept = 3, color = "black") 
 
If I would know the two functions created by geom_density(), I guess it is possible to find the intersection with uniroot(), but is it even possible to extract them?
I want to show the theoretical threshold of a test visually.
Thank you for your help guys! 
             
            
               
               
              1 Like 
            
           
          
            
              
                AlexisW  
                
               
                 
              
                  
                    November 17, 2021,  5:50am
                   
                   
              2 
               
             
            
              You can use layer_data() to extract the computed variables, as described e.g. here :
library(tidyverse)
p <- tibble(score = c(rnorm(300, 3, 3), rnorm(300, 6, 3)),
       category = rep(c("a","b"), each = 300))|>
  ggplot(aes(score, fill = category)) +
  geom_density(alpha = 0.5)
computed_variables <- layer_data(p)
inversions <- computed_variables |>
  group_by(x) |>
  arrange(fill) |>
  mutate(delta_y = diff(y)) |>
  ungroup() |>
  pull(delta_y) |>
  sign() |>
  diff() |>
  (\(.x) which(.x != 0))() |>
  (\(.x) computed_variables$x[.x])()
p +
  geom_vline(xintercept = inversions,
             linetype = "dotted")
 
Created on 2021-11-17 by the reprex package  (v2.0.1) 
             
            
               
               
              3 Likes 
            
           
          
            
              
                system  
                
                  Closed 
               
              
                  
                    November 24, 2021,  5:51am
                   
                   
              3 
               
             
            
              This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.  If you have a query related to it or one of the replies, start a new topic and refer back with a link.