Во-первых, мне нравится ваш подход; не уверен, что это менее "хаккейный", но вот еще один вариант использования gghighlight
# Generate data (see comment below)
library(dplyr)
df <- data.frame(x = seq(-5, 5, length.out = 100)) %>% mutate(y = dnorm(x))
# (gg)plot and (gg)highlight
library(ggplot2)
library(gghighlight)
ggplot(df, aes(x, y)) + geom_area(fill = "sky blue") + gghighlight(x < -1.35)
Из того, что я понимаю, gghighlight
нужен аргумент data
, поэтому он не будет работать с geom_area
сам по себе (то есть без data
, но с stat = "function"
) или с stat_function
. Вот почему я сначала генерирую данные df
.
Обновление
В ответ на ваш комментарий о том, как "выделите область между 1 и -1" ; Вы можете сделать следующее
ggplot(df, aes(x, y)) + geom_area(fill = "sky blue") + gghighlight(abs(x) < 1)
Обновление 2
Чтобы выделить область 1.5 < x < 2.5
, просто используйте условный оператор x > 1.5 & x < 2.5
ggplot(df, aes(x, y)) + geom_area(fill = "sky blue") + gghighlight(x > 1.5 & x < 2.5)
Чтобы предупредить потенциал, следуйте вопросам: Этот метод будет работать только для смежных регионов. То есть я не нашел способа выделить x < -2.5 & x > 2.5
в одном выражении gghighlight
.