在ggplot2的单个分面上使用geom_text注释文本

5
以下代码可以在每个面上获取文本,但是文本重叠:在每个面上,“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

如果提供的答案解决了您的问题,请通过单击答案下方投票按钮旁边的复选标记来指示此操作。 - Claus Wilke
2个回答

3

您需要将列f添加到label_graph中,这样一旦应用了facet,标签就会出现在指定的facet上。

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


2

你是否可以直接标记facet标题,而不是标记底部角落? 你的示例表明这可能是更好的解决方案。 如果这对你的实际用例有用,你可以通过粘贴X直接更改f列,然后你会得到:

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


非常感谢。实际上,我正在寻找一种区分面部标题和每个标题特定文本的方法。 - Sebastien

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接