Как сделать панель ошибок для geom_hline, используя geom_ribbon в ggplot2?
Я хочу иметь панель ошибок для моего geom_hline и подумал, что geom_ribbon с прозрачностью будет выглядеть лучше. но я не могу понять, как заставить его дойти до конца сюжета. Я хочу, чтобы geom_ribbon касался сторон графика, как это делает geom_hline. Вот пример кода:
library('ggplot2')
x <- c(1,2,3,4,5,6,7,8,9,10)
y <- c(1,2,3,4,5,6,7,8,9,10)
data <- data.frame(x,y)
p1 <- ggplot(data,aes(x = x, y = y)) + geom_line() + geom_hline(yintercept=5)
p1 + geom_ribbon(aes(y = y[5],ymin = y[5]-0.5, ymax = y[5]+0.5, fill = 'red'), alpha = 0.4)
3 ответа
Варианты пары:
1) Использование geom_hline
вместо geom_ribbon
вот так (наверное лучший вариант):
p1 + geom_hline(yintercept = y[5], color = 'red', size = 8, alpha = 0.4)
2) Удалить область между областью графика и осью, добавив scale_x_continuous(expand=c(0,0))
вот так (кредит на /questions/41880631/kak-ubrat-prostranstvo-mezhdu-osyu-i-ploschadyu-v-ggplot2/41880638#41880638):
p1 + geom_ribbon(aes(y = y[5],ymin = y[5]-0.5, ymax = y[5]+0.5, fill = 'red'), alpha = 0.4) +
scale_x_continuous(expand=c(0,0))
Использование annotate
с бесконечными значениями х:
ggplot(data, aes(x, y)) +
geom_line() +
geom_hline(yintercept = 5) +
annotate('ribbon', x = c(-Inf, Inf), ymin = 5 - 0.5, ymax = 5 + 0.5,
alpha = 0.4, fill = 'red')
В geom_hline() нет способа установить xlim, вместо этого горизонтальная линия проходит от конца графика к другому. Вместо этого вы можете использовать geom_segment, который позволяет вам управлять x-диапазоном и y-диапазоном линии, указав начальную координату сегмента (x, y) и конечную координату (xend, yend)
Это работает:
library('ggplot2')
x <- c(1,2,3,4,5,6,7,8,9,10)
y <- c(1,2,3,4,5,6,7,8,9,10)
data <- data.frame(x,y)
p1 <- ggplot(data, aes(x = x, y = y)) + geom_line() + geom_segment(aes(x = x[1], xend = x[10], y = y[5], yend = y[5]))
p1 + geom_ribbon(aes(y = y[5],ymin = y[5]-0.5, ymax = y[5]+0.5, fill = 'red'), alpha = 0.4)