I was trying to plot the max values from a dataset with x-axis = Date
and the y-axis = max_value
grouped by Stations, like the picture I found on this
Where the blue dots are the max values from the Station Nº1.That's the only thing I want to plot, not the other ones in the same plot. In plot 1 Station 1, in plot 2 Station 2, etc.
CodePudding user response:
The data.frame you provided is different from the plot. But if you want to get different plots for every station at once.Not calling a different ggplot for every station, maybe the facet_wrap()
function (or facet_grid()
) is helpful:
library(tidyverse)
library(lubridate)
df2 <- data.frame (Station = c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 10, 10, 10),
Date = c("1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018","1/1/2018", "2/1/2018", "3/1/2018"),
MAX_NO2 = c(55,52,58,76,98,12,14,23,54,76,90,99,43,32,76),
MAX_O3 = c(13,45,87,72,54,88,102,63,64,53,87,123,15,76,34))
df2 %>%
mutate(Station = as.character(Station)) %>%
ggplot(aes(x = Date, y = MAX_NO2, colour=Station, group=Station))
geom_line() geom_point() theme_test()
facet_wrap(~Station)
I can't show a plot with SO2 because the data is different. Also, note that ymd(date)
is wrong, should be dmy(Date)
.
CodePudding user response:
As mentioned in the comments, it is easiest to remove the other stations before plotting with ggplot2
, so that you only keep the data that you need to plot. Also, for converting the date, I think you may want dmy
or mdy
instead of ymd
(at least from your sample data).
library(tidyverse)
library(lubridate)
df2 %>%
# add date as date
mutate(date = mdy(Date)) %>%
filter(Station == 1) %>%
# plot them
ggplot( aes(x = date, y = MAX_NO2 , color = Station, group = Station))
geom_line()
geom_point()
theme_test()
Output