Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Highlight a line in ggplot with multiple lines

I want to change the size, linetype, color etc. for one line in ggplot. Here is a minimal reproducible example:

library(tidyverse)    
# Data in wide format
    df_wide <- data.frame(
    Horizons = seq(1,10,1),
    Country1 = c(2.5, 2.3, 2.2, 2.2, 2.1, 2.0, 1.7, 1.8, 1.7, 1.6),
    Country2 = c(3.5, 3.3, 3.2, 3.2, 3.1, 3.0, 3.7, 3.8, 3.7, 3.6),
    Country3 = c(1.5, 1.3, 1.2, 1.2, 1.1, 1.0, 0.7, 0.8, 0.7, 0.6)
    )
    
# Convert to long format
    df_long <- df_wide %>%
      gather(key = "variable", value = "value", -Horizons)
    
# Plot the lines
plotstov <- ggplot(df_long, aes(x = Horizons, y = value)) + 
  geom_line(aes(colour = variable, group = variable))+
  theme_bw() 

Output: Output

How can I change the size, linetype, color of Country1, without having to plot every line separately, like: geom_line(aes( y = Country1...)) + geom_line(aes(y = Country2...)), and therefore highlight the line of Country1?

Thanks a lot in advance!

like image 304
Elias Avatar asked Dec 31 '22 20:12

Elias


1 Answers

Not every line but you can plot only 'Country1' separately :

library(ggplot2)

ggplot(subset(df_long, variable != 'Country1'), aes(x = Horizons, y = value)) + 
  geom_line(aes(colour = variable, group = variable)) +
  geom_line(data = subset(df_long, variable == 'Country1'), 
            size = 3, linetype = 'dashed', color = 'blue') +
  theme_bw() 

enter image description here

like image 51
Ronak Shah Avatar answered Jan 13 '23 13:01

Ronak Shah