Как сделать панель ошибок для 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) 
Другие вопросы по тегам