add two additional lines to a ggplot

I’m not sure the second part of your question makes any sense to me. But from the description one way is to simply add a level where you alter you data and aes argument, as I do in the example below (using mtcars as an example data)

# Load libraries and data
library(tidyverse)
library(ggplot2)
data(mtcars)

mtcars %>% ggplot(aes(x = hp, y = mpg)) + 
  geom_point(aes(col = factor(cyl))) + 
  stat_ellipse(aes(col = factor(cyl))) + 
  # Add line for ellipsis center
  geom_line(data = mtcars %>% group_by(cyl) %>% summarize(mean_x = mean(hp),
                                                          mean_y = mean(mpg),
                                                          .groups = 'drop'),
            mapping = aes(x = mean_x, y = mean_y)) + 
  geom_point(data = mtcars %>% group_by(cyl) %>% summarize(mean_x = mean(hp),
                                                           mean_y = mean(mpg),
                                                           .groups = 'drop'), 
             mapping = aes(x = mean_x, y = mean_y)) +
  # Add smooth for.. what? I don't understand this part of the question.
  geom_smooth(data = mtcars %>% group_by(cyl) %>% mutate(x_val = hp - mean(hp)) %>% ungroup(),
              mapping = aes(x = x_val, y = mpg))

multipart-plot

Now it should be quite clear which part does not make sense to me. Why/what do you mean with the second path (geom_smooth)? Moving the x-axis on the smoother makes no sense to me. Also I took the liberty of changing the definition of the first part, by instead adding the single points of the mean (center of circles) to the plot and connecting the using geom_line.

CLICK HERE to find out more related problems solutions.

Leave a Comment

Your email address will not be published.

Scroll to Top