Подтвердить что ты не робот

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))

Благодарим вас за помощь.

4b9b3361

Ответ 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)))

введите описание изображения здесь