R ggplot2: маркировка горизонтальной линии по оси y с числовым значением
У меня есть горизонтальная линия в ggplot, и я хотел бы пометить ее значением (7.1) на оси y.
library(ggplot2)
df <- data.frame(y=c(1:10),x=c(1:10))
h <- 7.1
plot1 <- ggplot(df, aes(x=x,y=y)) + geom_point()
plot2 <- plot1+ geom_hline(aes(yintercept=h))
Благодарим вас за помощь.
Ответы
Ответ 1
Не ясно, хотите ли вы, чтобы 7.1 являлась частью оси y, или просто хотите, чтобы обозначить линию. Предполагая первое, вы можете использовать scale_y_continuous()
, чтобы определить свои собственные перерывы. Что-то вроде этого может делать то, что вы хотите (скорее всего, потребуется некоторое вождение):
plot1+ geom_hline(aes(yintercept=h)) +
scale_y_continuous(breaks = sort(c(seq(min(df$y), max(df$y), length.out=5), h)))
![enter image description here]()
Предполагая последнее, это, вероятно, больше того, что вы хотите:
plot1 + geom_hline(aes(yintercept=h)) +
geom_text(aes(0,h,label = h, vjust = -1))
![enter image description here]()
Ответ 2
Как насчет чего-то подобного?
plot1 + geom_hline(aes(yintercept=h), colour="#BB0000", linetype="dashed") +
geom_text(aes( 0, h, label = h, vjust = -1), size = 3)
Ответ 3
Аналогично решению Chase с изменением использования существующих меток.
ggplot_build(plot1)$layout$panel_ranges[[1]]$y.major_source
можно использовать для извлечения ярлыков exisitng и добавления новых h
.
plot1 + geom_hline(aes(yintercept=h)) +
scale_y_continuous(breaks = sort(c(ggplot_build(plot1)$layout$panel_ranges[[1]]$y.major_source, h)))
![введите описание изображения здесь]()