I have a data set that looks roughly like this:
Station | Group | Date | Value | Parameter
1 | St1 | A | 2015-03-03 | 25 | N
2 | St2 | A | 2015-04-03 | 25 | N
3 | St3 | B | 2015-03-05 | 25 | N
4 | St4 | C | 2015-06-03 | 25 | N
I am creating a plot that is faceted by group. X axis is the date, Y the value. I am trying to color code the Stations (unique color per station) by facet. Right now I can make all the stations have a unique color, but over the entire data set there are a ton of stations so its very hard to see the differences. Each group though only has about 5-8 stations each.
What I'm trying to accomplish is a way to use the same 5-8 colors in each facet, even though they will correspond to different stations. I'm totally stumped on this, any help is appreciated!!
I think if you create a dummy variable by converting Station to factor for each Group, and then set that as the colour variable in ggplot, you'll get the desired results.
Like this:
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(ggplot2)
dataset <- tibble(Station = c("St1", "St2", "St3", "St4"),
Group = c("A", "A", "B", "C"),
Date = c("3.3.15", "3.4.15", "5.3.15", "3.6.15"),
Value = c(25, 25, 25, 25),
Parameter = c("N", "N", "N", "N"))
dataset %>%
group_by(Group) %>%
mutate(dummy_var = as.character(x = factor(x = Station,
labels = seq_len(length.out = n_distinct(x = Station))))) %>%
ungroup() %>%
ggplot(mapping = aes(x = Date,
y = Value)) +
geom_point(mapping = aes(colour = dummy_var)) +
facet_wrap(facets = (~ Group)) +
scale_color_discrete(guide = FALSE)