【问题标题】:geom_text and facets not workinggeom_text 和方面不起作用
【发布时间】:2015-07-04 13:44:58
【问题描述】:

数据文件对于dput 来说太大了,但我希望有人能够识别我的错误。故事是这样的:我使用 ggplot 和以下代码制作了以下小倍数图。一切正常。

ggplot(sm.df, aes(year, N, group = 1)) + geom_line(aes(colour = top10)) + 
facet_wrap( ~ shortTitle, ncol=7) +
theme_bw() +
theme(panel.grid.major = element_blank(), 
panel.grid.minor = element_blank(), 
axis.text.x = element_text(angle=45, hjust=1, size =8)) + 
scale_x_discrete(breaks=seq(1989, 2020, 8)) + 
ylim(0, 150)

现在,我想用整体 N 注释每个方面。我创建了一个包含 x 位置、y 位置和要绘制的实际值的向量。因此,基本上,每张图上的所有内容都将位于相同的 X 和 Y 位置,并带有不同的标签。

'data.frame':   78 obs. of  3 variables:
 $ x1     : num  12.5 12.5 12.5 12.5 12.5 12.5 12.5 12.5 12.5 12.5 ...
 $ y1     : num  130 130 130 130 130 130 130 130 130 130 ...
 $ N.label: int  1650 1456 1348 1216 1086 1035 985 940 888 826 ...

但是,当我在情节中添加geom_text(data = x.df, aes(x = x1, y = y1, label = N.label), inheret.aes=FALSE) 时,似乎每个标签都在每个方面都被重印了。显然我做错了什么。

我已经详细介绍了如何注释多面图,但我错过了这个问题。如果您有任何想法,将不胜感激 - 生成一些数据不是很简单,但我想如果需要的话我会这样做。

【问题讨论】:

    标签: r ggplot2 facet


    【解决方案1】:

    This 回答一个非常相似的问题应该会有所帮助。需要有一个标识符来标识要在哪个方面打印哪个标签。在你的情况下,你应该使用shortTitle

    这是一个使用mtcars的修改示例,并根据齿轮数量进行分面和标记

    library(ggplot2)
    
    xpos <- c(10,10,10) 
    ypos <- c(Inf,Inf,Inf)
    lab <- c(378,2,50)
    gears <- c(3:5)
    ldata <- data.frame(xpos, ypos, lab, gears)
    
    
    ggplot(mtcars) + geom_bar(aes(x=cyl)) + facet_wrap(~gears, ncol=2) + 
      geom_text(data=ldata, aes(x=xpos, y=ypos, 
                                label=lab, size=1), 
                vjust=2, parse=FALSE)
    

    尝试将shortTitle 添加到您的标签列表中。看起来这可能就是您所需要的。如果您提供数据框的子样本,这将有助于确定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多