Аннотирующий текст на отдельном фасете в ggplot2 с использованием geom_text - PullRequest
3 голосов
/ 09 ноября 2019

С помощью следующего кода я получаю текст на каждом фасете, но текст накладывается: «X1» и «X2» накладываются на каждый фасет. Где проблема в моем коде?

R код:

new_df <- data.frame(f = as.factor(rep(1:2, 15)), x = rnorm(30), y = runif(30))
g <- ggplot(data = new_df, aes(x = x, y = y)) + geom_point() 
g <- g + facet_grid(. ~ f)
g
label_graph <- data.frame(label = c("X1", "X2"))

g <- g + geom_text(data = label_graph,
                    mapping = aes(x = Inf, y = -Inf, label = label),
                    hjust = 1.1, vjust = -1.1)
g

Ответы [ 2 ]

2 голосов
/ 09 ноября 2019

Это вариант для вас, чтобы маркировать заголовки фасетов напрямую, вместо того, чтобы маркировать нижние углы? Ваш пример предполагает, что это может быть лучшим решением. Если это работает для вашего фактического варианта использования, вы можете просто изменить столбец f непосредственно, вставив X, и вы получите:

new_df <- data.frame(f = as.factor(paste0("X", rep(1:2, 15))), x = rnorm(30), y = runif(30))
g <- ggplot(data = new_df, aes(x = x, y = y)) + geom_point() 
g <- g + facet_grid(. ~ f)
g

facetlabels

1 голос
/ 09 ноября 2019

вам нужно добавить столбец f к вашему label_graph, таким образом, как только фасет будет применен, надписи будут на обозначенном фасете

new_df <- data.frame(f = as.factor(rep(1:2, 15)), x = rnorm(30), y = runif(30))
g <- ggplot(data = new_df, aes(x = x, y = y)) + geom_point() 
g <- g + facet_grid(. ~ f)
label_graph <- data.frame(label = c("X1", "X2"),f=factor(1:2))

g <- g + geom_text(data = label_graph,
                    mapping = aes(x = Inf, y = -Inf, label = label),
                    hjust = 1.1, vjust = -1.1)
g

enter image description here

...