【问题标题】:using mtext with lattice plots and grid.arrange使用 mtext 与格点图和 grid.arrange
【发布时间】:2017-01-25 18:31:35
【问题描述】:

我正在尝试将 A 和 B 标签添加到我使用 grid.arrange 函数组合的两个格子图中。我无法让 B 标签显示在我想要的位置。我希望字母 A 位于顶部图的左侧和上方,而字母 B 位于底部图的左侧和上方。我尝试将行代码更改为不同的数字,但没有成功。

以下是一些示例数据:

  data1<-data.frame(x=c(1:60),y=rep(c("A","B"),each=30),w=rep(c("V1","V2","V3"),times=20))

Plotting Code
require(lattice);require(grid.Extra)

p1<-bwplot(x~y, data = data1, groups = w, 
       pch = "|", box.width = 1/6,  par.settings =mytheme ,scales=list(x=list(cex=1.2),y=list(cex=1.2)),
       ylab=list("Number of Scallops per Station",fontsize=15),xlab=list("Strata",fontsize=15),
       panel = panel.superpose,
       panel.groups = function(x, y, ..., cex,group.number,col) { 
           panel.bwplot(x + (group.number-1.5)/6,y,...) 
       }) 

p2<-barchart(x~y|w,type="count",layout=c(3,1),data=data1,
    col="light gray", xlab="Binned Number of Scallops per Station",ylab="Count",horizontal=F,
    strip = strip.custom(bg="white",strip.levels = T),as.table=T,origin=0,family="A",
    scales=list(relation="same",alternating=1,x=list(cex=1.2),y=list(cex=1.2)),
    par.settings = list( grid.pars = 
    list(fontfamily = 'serif',cex=1.2)),
    panel=function(x,y,...){
    panel.barchart(x,y,...)})

grid.arrange(p1,p2)

mtext("A",3,line=2,cex=1.2,at=0,family="serif")


 #not in the correct area

mtext("B",3,line=25,cex=1.2,at=0,family="serif")


sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: i386-w64-mingw32/i386 (32-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1

【问题讨论】:

    标签: r lattice gridextra


    【解决方案1】:

    mtext() 用于基本图形,网格等效为 grid.text,

    library(lattice)
    library(gridExtra)
    library(grid)
    
    p1 <- p2 <- xyplot(1~1)
    
    grid.arrange(p1, p2)
    grid.text(c("A","B"), x=0, y=c(0.5, 1), vjust=1, hjust=0, gp=gpar(fontface=4))
    

    【讨论】:

      【解决方案2】:

      我强烈支持@baptiste 建议的使用grid.text 的方法。但是,如果您需要在某些时候将 base-R 文本注释与基于网格的图形一起使用,请记住首先通过plot.new() 打开一个新的绘图设备。这是一种基于text() 的快速方法,可以解决此问题,但同样,请记住尽可能使用grid 功能。

      library(lattice)
      library(gridExtra)
      library(gridBase)
      
      ## create and combine plots
      p1 <- p2 <- xyplot(1~1)
      p <- grid.arrange(p1, p2)
      
      ## open new plot device
      plot.new()
      
      ## navigate to base graphics plot region and insert grob
      vps <- gridBase::baseViewports()
      pushViewport(vps$inner, vps$figure, vps$plot)
      
      grid.draw(p)
      
      ## add text annotations 
      text(x = 0, y = c(.975, .45), labels = c("A", "B"), font = 2)
      

      【讨论】:

        猜你喜欢
        • 2016-01-25
        • 1970-01-01
        • 1970-01-01
        • 2019-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多