首页>Program>source

我经常使用数值作为刻面。 我希望提供足够的信息来解释补充性标题中的这些构面值,类似于轴标题。 标签程序选项会重复很多不必要的文本,并且不能用于较长的变量标题。

有什么建议吗?

默认值:

test<-data.frame(x=1:20, y=21:40, facet.a=rep(c(1,2),10), facet.b=rep(c(1,2), each=20))
qplot(data=test, x=x, y=y, facets=facet.b~facet.a)

我想要的东西:

我在ggplot中能做的最好的事情:

qplot(data=test, x=x, y=y)+facet_grid(facet.b~facet.a, labeller=label_both)

如@Hendy所示,类似于: 在ggplot2绘图中添加辅助y轴-使 完美

最新回答
  • 2021-1-9
    1 #

    作为最新的 ggplot2 使用 gtable 在内部,修改图形非常容易:

    library(ggplot2)
    test <- data.frame(x=1:20, y=21:40, 
                       facet.a=rep(c(1,2),10), 
                       facet.b=rep(c(1,2), each=20))
    p <- qplot(data=test, x=x, y=y, facets=facet.b~facet.a)
    # get gtable object
    z <- ggplotGrob(p)
    library(grid)
    library(gtable)
    # add label for right strip
    z <- gtable_add_cols(z, unit(z$widths[[7]], 'cm'), 7)
    z <- gtable_add_grob(z, 
                         list(rectGrob(gp = gpar(col = NA, fill = gray(0.5))),
                              textGrob("Variable 1", rot = -90, gp = gpar(col = gray(1)))),
                         4, 8, 6, name = paste(runif(2)))
    # add label for top strip
    z <- gtable_add_rows(z, unit(z$heights[[3]], 'cm'), 2)
    z <- gtable_add_grob(z, 
                         list(rectGrob(gp = gpar(col = NA, fill = gray(0.5))),
                              textGrob("Variable 2", gp = gpar(col = gray(1)))),
                         3, 4, 3, 6, name = paste(runif(2)))
    # add margins
    z <- gtable_add_cols(z, unit(1/8, "line"), 7)
    z <- gtable_add_rows(z, unit(1/8, "line"), 3)
    # draw it
    grid.newpage()
    grid.draw(z)
    

    当然,您可以编写一个自动添加带状标签的函数. ggplot2的未来版本 可能具有此功能;

  • 2021-1-9
    2 #

    也许有更好的方法,但是您可以:

    fac1 = factor(rep(c('a','b'),10))
    fac2 = factor(rep(c('a','b'),10))
    data = data.frame(x=1:10, y=1:10, fac1=fac1, fac2=fac2)
    p = ggplot(data,aes(x,y)) + ggplot2::geom_point() + 
    facet_grid(fac1~fac2)
    p + theme(plot.margin = unit(c(1.5,1.5,0.2,0.2), "cm"))
    grid::grid.text(unit(0.98,"npc"),0.5,label = 'label ar right', rot = 270) # right
    grid::grid.text(unit(0.5,"npc"),unit(.98,'npc'),label = 'label at top', rot = 0)   # top
    

  • 2021-1-9
    3 #

    除了kohske概述的方法外,您还可以在通过更改添加的框中添加边框

    col=NA
    

    col=gray(0.5), linetype=1
    

    还可以更改

    fill=gray(0.5)
    

    fill=grey(0.8)
    

    gp=gpar(col=gray(1))
    

    gp=gpar(col=gray(0))
    

    如果您希望新的条与刻面标签匹配

    z <- gtable_add_grob(z, 
          list(rectGrob(gp = gpar(col = gray(0.5), linetype=1, fill = gray(0.8))),
          textGrob("Variable 1", rot = -90, gp = gpar(col = gray(0)))),
          4, 8, 6, name = paste(runif(2)))
    

  • jQuery 30 urlindexOf错误
  • bash:如何使用前缀/后缀重命名?