【问题标题】:faceting: adding individual arrows in multiple plots does not work刻面:在多个图中添加单个箭头不起作用
【发布时间】:2012-04-01 19:36:59
【问题描述】:

在 Adding individual arrows in multiple plots 我描述了一个问题,感谢 math.coffee 解决了这个问题。

我的问题是如何只在一个方面添加一个箭头。最近我安装了一个新版本的R:

平台 i386-pc-mingw32
version.string R 版本 2.14.2 (2012-02-29) ggplot2_0.9.0

这是代码示例

# data frame
xdf <- data.frame(x=rep(1:10,2)
                  ,y=c( 2*c(1:10)+rnorm(10,0,3), 4*c(1:10)+rnorm(10,0,5))
                  ,z=rep(c("A","B"),each=10)
                  )
xdf

# plot
ggplot with faceting
xp <- ggplot(xdf,aes(x=x,y=y)) +
   geom_line() +
   facet_grid(. ~ z)
xp

# location of the arrow: x=4, y=y+1 on the top of the first facet (A)
(f1x4 <- xdf[4,"y"]+1)

# add arrow and label
xp + geom_segment(aes(x=4,xend=4,y=f1x4+3,yend=f1x4,z='A')  # <-- see the z='A'
                  , arrow=arrow(length=unit(0.4,"cm")
                    )
                 ) +
  geom_text(aes(x=4,y=f1x4+5, label="a",z='A'))        # <-- see the z='A'

应该发生什么:箭头应该只在刻面 A 上创建。 会发生什么:箭头在两个方面 A 和 B 上创建。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    显然在更新 R 和 ggplot 之后发生了变化。坐标数据必须与数据框一起提供。这是一个带有附加分组的示例:

    xdf <- data.frame(x=rep(1:10,each=4)
                  ,y=rep(1:10,each=4)*rep(1:4,10)  +rnorm(40,0,1)
                  ,g=rep(c("R","S"),20)
                  ,z=rep(c("A","A","B","B"),10)
                  )
    head(xdf)
    # plot
    xp <- ggplot(xdf,aes(x=x,y=y, group=g)) +
    geom_line() +
    facet_grid(. ~ z)
    xp
    # location of the arrow: x=4, y=y+1 on the top of the first facet (A)
    (f1x4 <- subset(xdf,x==4 & g=="R" & z=="A")$y)
    arrdf <- data.frame(x = 4, y = f1x4, z = "A", g = "R")   # create new data.frame for    annotations
    # add arrow and label
    xp + geom_segment(data=arrdf,aes(x=x,xend=x,y=y+3,yend=y,z=z,g=g)  # <-- see the z='A'
                  , arrow=arrow(length=unit(0.4,"cm")
                    )
                 ) +
    geom_text(data=arrdf,aes(x=x,y=y+4, label="a",z=z, g=g)) 
    

    【讨论】:

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