【问题标题】:ggplot2: geom_text() with facet_grid()?ggplot2:geom_text() 和 facet_grid()?
【发布时间】:2013-03-29 20:04:09
【问题描述】:

我只想为ggplot2生成的每个面板添加注释;每个角落只有简单的标签,如 (a)、(b)、(c) 等。有没有简单的方法来做到这一点?

【问题讨论】:

  • 有图片作为例子,可以发一下吗?
  • 对不起,我需要弄清楚如何发布图片......

标签: r plot ggplot2


【解决方案1】:

来自:https://groups.google.com/forum/?fromgroups=#!topic/ggplot2/RL8M7Ut5EpU 您可以使用以下内容:

library(ggplot2) 
x <-runif(9, 0, 125) 
data <- as.data.frame(x) 
data$y <- runif(9, 0, 125) 
data$yy <- factor(c("a","b","c")) 

ggplot(data, aes(x, y)) + 
    geom_point(shape = 2) + 
    facet_grid(~yy) + 
    geom_text(aes(x, y, label=lab),
        data=data.frame(x=60, y=Inf, lab=c("this","is","the way"),
             yy=letters[1:3]), vjust=1)

应该给你这个:

【讨论】:

  • +1,但您能否提供更多有关其工作原理的背景信息?现在只是一段代码和一张图片。
  • 当然。基本的ggplot 调用具有带有geom_point facet_grid 构面的实际绘图数据的数据框。关键是为 geom_text 设置一个新的数据框(在代码 sn-p 中动态创建,但您可以在 ggplot 块之外创建它并仅引用数据框)并匹配标签的数量元素到方面的数量。您可以多次调用geom_text 在各个方面放置多个不同的标签。它们将按顺序被引用,因此请注意这一点。
  • 如果您想绘制多个标签,则无需多次调用 geom_text,只需使用适当的 text 和 facet_grid 变量将行添加到您的 data.frame。
  • 啊,我看到了,但没有工作,因为我弄错了。谢谢。但是您知道Inf 工作的条件吗?我的只是说,Error in seq.default(from = best$lmin, to = best$lmax, by = best$lstep) : 'from' must be of length 1.
  • @hrbrmstr -- 感谢您的出色回答。我想知道您是否可以提供 x 何时是离散变量的方法?
【解决方案2】:

基本上,您创建一个带有文本的data.frame,其中包含一个带有文本的列,以及一个带有您用于facet_grid 的变量的列。然后,您可以简单地添加 geom_textdata.frame。有关文本放置等的更多详细信息,请参阅geom_text 的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-15
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    • 2011-12-01
    相关资源
    最近更新 更多