/ / R ggplot2: Etykietowanie poziomej linii bez kojarzenia etykiety z serią - r, ggplot2

R ggplot2: Etykietowanie poziomej linii bez kojarzenia etykiety z serią - r, ggplot2

Chciałbym nazwać poziomą linię na ggplot z wieloma seriami, bez kojarzenia linii z serią. R ggplot2: Etykietowanie poziomej linii na osi y z wartością liczbową pyta o sprawę pojedynczej serii, dla której geom_text rozwiązuje się. Jednak, geom_text kojarzy etykietę z jedną z serii za pomocą koloru i legendy.

Rozważ ten sam przykład z tego pytania, z innym color kolumna:

library(ggplot2)
df <- data.frame(y=1:10, x=1:10, col=c("a", "b"))  # Added col
h <- 7.1
plot1 <- ggplot(df, aes(x=x, y=y, color=col)) + geom_point()
plot2 <- plot1 + geom_hline(aes(yintercept=h))
# Applying top answer https://stackoverflow.com/a/12876602/1840471
plot2 + geom_text(aes(0, h, label=h, vjust=-1))

Wynik

Jak mogę oznaczyć etykietę linii bez kojarzenia etykiety z jedną z serii?

Odpowiedzi:

4 dla odpowiedzi № 1

Czy to właśnie miałeś na myśli?

library(ggplot2)
df <- data.frame(y=1:10, x=1:10, col=c("a", "b"))  # Added col
h <- 7.1
ggplot(df, aes(x=x,y=y)) +
geom_point(aes(color=col)) +
geom_hline(yintercept=h) +
geom_text(data=data.frame(x=0,y=h), aes(x, y), label=h, vjust=-1)

Po pierwsze, możesz mapować kolory lokalnie na warstwę punktów. Po drugie, nie musisz wywoływać wszystkich zaproszeń do estetyki aes(...) - tylko te, które chcesz zmapować do kolumn zestawu danych. Po trzecie, możesz używać zestawów danych specyficznych dla warstwy data=... w wywołaniach do określonego geom_ *.


1 dla odpowiedzi nr 2

Możesz użyć annotate zamiast:

plot2 + annotate(geom="text", label=h, x=1, y=h, vjust=-1)

Wynik

Edycja: Usunięto wady, które x jest wymagane, ponieważ to także jest prawdą geom_text.