У меня есть фрейм данных, например данные:
# Libraries
library(ggplot2)
library(dplyr)
# Generate database
set.seed(123)
data <- data.frame(
date = seq.Date(from = as.Date("2023-01-01"), to = as.Date("2023-12-31"), by = "day"),
value = runif (365, min = 50, max = 100)
)
# Create ggplot
ggplot(data, aes(x = date, y = value)) +
geom_line(color = "blue") +
theme(panel.background = element_blank())
Я хотел бы автоматически включить горизонтальные светло-серые линии для каждого значения, представленного на оси Y. Я безуспешно пробовал следующий код:
# Create ggplot
ggplot(data, aes(x = date, y = value)) +
geom_line(color = "blue") +
theme(panel.background = element_blank())+
geom_hline(yintercept = value)
Любая помощь?
Спасибо за ответ. Представленные значения означают, что мне нужна линия для каждого значения оси Y (в данном случае> 50, 60, 70, 80, 100). Лучший





Попробуйте добавить этот фрагмент кода перед печатью ggplot:
unique_values <- sort(unique(data$value))
for(i in 1:length(unique_values)){
p <- p + geom_hline(yintercept = unique_values[i], color = "lightgray", linetype = "dotted")
}
вы можете настроить цвет и тип линии по своему усмотрению
Я думаю, p + geom_hline(yintercept = unique_values) должно хватить.
Спасибо за ответ. Однако я хочу иметь одну строку не для каждого значения y, а для каждого значения оси y (в данном случае> 50, 60, 70, 80, 100). Лучший
Чтобы отрисовать горизонтальную линию для каждого разрыва шкалы y, используйте
theme(panel.background = element_blank(),
panel.grid.major.y = element_line(color = "gray"),
)
Что означает «представленные ценности»? Вы ищете
panel.grid.major.y = element_line(colour = "gray")?