Reputation: 5
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
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
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