Alonso Cid
Alonso Cid

Reputation: 5

R, ggplot2 multiple geometries?

I would like to make a plot with 2 different geometries each representing different data. I have three variables; Time (x), Temperature (y) and Station. I would like to represent some stations as geom_smooth and others as geom_line. Is there any way to tell them to represent only some values?

This is my code:

ggplot(data=StationsData,
   mapping=aes(x=Time, y=Temp, colour=Station))+ 
geom_smooth()+
scale_color_brewer(palette = "Set1")+
labs(x="Time (Months)", y="Temperature (ºC)", title= "Temperature")

Thanks for your time.

Upvotes: 0

Views: 75

Answers (2)

Alonso Cid
Alonso Cid

Reputation: 5

I found a solution, quite easy.

library("scales")

ggplot()+
   geom_smooth(data=Colorado, mapping=aes(x=Time, y=Temp, color="Logger"))+
   geom_point(data=Colorado2, mapping=aes(x=Time, y=Temp, color="Termometer"))+
   labs(x="Time (Months)", y="Temperature (ºC)", title= "Temperatures Colorado")

Thanks to all for the coments.

Upvotes: 0

Elias
Elias

Reputation: 736

Yes you can. Just make different subsets of your data. Here an 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)

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() 

Notice how country 1 is different. You could use any geom. You like. I hope this helps :)

Upvotes: 1

Related Questions