I have a set of data like below. What I want to do is plot date vs values and then have the color of the point/line depend on the X value.
I want to be able to create categories of different colors. So for example the data below, I have plotted date vs time then I would like colour to be dependent on the X value i.e., anything under 3 to display BLUE, anything above 3 and below 6 to be RED and anything above 6 to be GREEN.
I know how to create a graph which changes the color once depending on the limit I set using the code below but want to create colour categories based on the X value and also decide what colours they are.
date values X
2021-08-09 1 0.5
2021-08-09 8 0.7
2021-08-09 6 2
2021-08-09 14 3
2021-08-09 18 5
2021-08-09 10 6
2021-08-09 1 4
2021-08-09 3 9
2021-08-09 6 0.3
2021-08-09 8 0.9
2021-08-09 11 4
ggplot(df) + geom_line(aes(x = date, y = values, colour = X > 5))
Code now looks like this? Why is no category for 10+ showing up on the graph even though there are values of X = 10
All_Hourly_1 %>%
mutate(group = case_when(
max_AQHI < 2 ~ 1,
max_AQHI < 3 ~ 2,
max_AQHI < 4 ~ 3,
max_AQHI < 5 ~ 4,
max_AQHI < 6 ~ 5,
max_AQHI < 7 ~ 6,
max_AQHI < 8 ~ 7,
max_AQHI < 9 ~ 8,
max_AQHI < 10 ~ 9,
TRUE ~ 10)) %>%
ggplot(aes(x = date, y = PM_RAMP, color = as.factor(group), group = 1)) +
geom_line() + scale_color_manual(values = c("deepskyblue1", "dodgerblue", "dodgerblue4", "yellow", "gold", "goldenrod", "lightcoral","red", "red3", "red4"), labels = c("1 (Low Risk)","2 (Low Risk)","3 (Low Risk)","4 (Moderate Risk)","5 (Moderate Risk)","6 (Moderate Risk)","7 (High Risk)","8 (High Risk)","9 (High Risk)","10+ (Very High Risk)")) + labs(colour = "Air Quality Health Index Value") + geom_line(size = 1) + labs (x = "Date", y = expression(PM[2.5]," (µg ", m^-3,")"))
But the graph looks like below:
Try case_when
before ggplot
and then use scale_color_manual
to set colors and it's better to change date
as date format using as.Date
.
df %>%
mutate(group = case_when(
X < 3 ~ 1,
X < 6 ~ 2,
TRUE ~ 3
), date = as.Date(date)
) %>%
ggplot(aes(x = date, y = values, color = as.factor(group))) +
geom_line() + scale_color_manual(values = c("blue", "red", "green"))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With