【问题标题】:Annotating text on individual facet in ggplot2 using geom_text使用 geom_text 在 ggplot2 中的单个方面注释文本
【发布时间】:2019-11-09 15:33:40
【问题描述】:

使用以下代码,我获得了每个方面的文本,但文本是叠加的:“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

【问题讨论】:

  • 如果提供的答案之一解决了您的问题,请通过单击答案投票按钮下方的复选标记来表明这一点。

标签: r ggplot2 label geom-text


【解决方案1】:

您可以选择直接标记构面标题而不是标记底角吗?您的示例表明这可能是一个更好的解决方案。如果这适用于您的实际用例,您可以直接通过粘贴 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

【讨论】:

  • 非常感谢。事实上,我一直在寻找一种方法来区分分面标题和每个标题的特定文本。
【解决方案2】:

您需要将列 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

【讨论】:

    猜你喜欢
    • 2021-06-19
    • 2015-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多