Ich habe eine horizontale Linie in einem ggplot und möchte den Wert (7.1) auf der y-Achse beschriften.
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))
Danke für deine Hilfe.
Es ist nicht klar, ob Sie möchten, dass 7.1 Teil der Y-Achse ist, oder ob Sie nur eine Möglichkeit zum Beschriften der Linie wünschen. Angenommen, die ersteren können Sie mit scale_y_continuous()
Ihre eigenen Pausen definieren. So etwas kann das tun, was Sie wollen (am wahrscheinlichsten wird ein wenig gezögert):
plot1+ geom_hline(aes(yintercept=h)) +
scale_y_continuous(breaks = sort(c(seq(min(df$y), max(df$y), length.out=5), h)))
Letzteres vorausgesetzt, ist dies wahrscheinlich mehr, was Sie wollen:
plot1 + geom_hline(aes(yintercept=h)) +
geom_text(aes(0,h,label = h, vjust = -1))
Wie wäre es mit so etwas?
plot1 + geom_hline(aes(yintercept=h), colour="#BB0000", linetype="dashed") +
geom_text(aes( 0, h, label = h, vjust = -1), size = 3)
Ähnlich wie Chases Lösung mit einer Änderung der Verwendung der vorhandenen Labels.
ggplot_build(plot1)$layout$panel_ranges[[1]]$y.major_source
kann verwendet werden, um die vorhandenen Labels zu extrahieren und neue hinzuzufügen h
.
plot1 + geom_hline(aes(yintercept=h)) +
scale_y_continuous(breaks = sort(c(ggplot_build(plot1)$layout$panel_ranges[[1]]$y.major_source, h)))
Dies ist eine Folgemaßnahme zu der Antwort von Prradep .
Ich denke, die Antwort von Prradep funktioniert für eine ältere Version von ggplot2. Ich verwende ggplot2 Version 3.1.0 und um die vorhandenen Labels von plot1
in dieser Version zu extrahieren, müssen Sie Folgendes verwenden:
ggplot_build(plot1)$layout$panel_params[[1]]$y.major
Dies funktioniert nur bei LINEAR AXES! Wenn Sie eine nichtlineare Y-Achse haben (zum Beispiel logarithmisch), speichert ggplot2, wo Markierungen stehen würden, wenn die Achse in $y.major
linear wäre. Die tatsächlichen Häkchenmarkierungen werden als Zeichenvektor in $y.labels
gespeichert. Daher müssen Sie für eine nichtlineare Y-Achse Folgendes verwenden:
as.numeric(ggplot_build(cl.plot.log)$layout$panel_params[[1]]$y.labels)