如何更改晶格图中单个面板上的轴

时间:2017-02-09 19:50:15

标签: r lattice axis-labels

我现在已经尝试了一段时间来解决格子图的问题。我的面板数量不均匀,因此如果我施加非交替轴标签,其中一个面板没有X轴标签。

以下代码不适用于我的特定项目,而是使用可供所有人使用的R数据集:

densityplot(~Taste|Wine,data=WineTasting, as.table=TRUE, 
        scales=list(alternating=FALSE), 
        panel=function(x,y,...){ 
           panel.densityplot(x,plot.points=FALSE) 
           } 
) 

这会产生一个看起来像第一张图片的情节:  Image 1

了解“Wine B”如何没有X轴。我希望所有面板的底部都有轴刻度标记和数字标签。因此,如果我插入panel.axis(side =“bottom”),我会收到一条错误消息和一个看起来像第二个图像的图: Image 2

我也尝试了以下代码:

densityplot(~Taste|Wine,data=WineTasting, as.table=TRUE, 
        scales=list(alternating=FALSE), 
        panel=function(x,y,...){ 
          panel.densityplot(x,plot.points=FALSE) 
            }, 
        if(isTRUE(panel.number(2))){ 
          panel.axis(side="bottom") 
        } 
) 

但这只会产生一条错误信息:

“get中的错误(”lattice.status“,envir = .LatticeEnv)[[prefix]] [[name]]:   下标超出范围“

任何人都可以帮我在单个面板(Wine B)的底部找到一个轴吗?

谢谢, 马特

1 个答案:

答案 0 :(得分:2)

你必须通过剪辑获得一点创意。

library(lattice)

densityplot(~ mpg | cyl, data = mtcars, as.table = TRUE, 
    scales = list(alternating = FALSE),
    par.settings = list(clip = list(panel = "off")),
    panel = function(x, y, ...) { 
       panel.densityplot(x, plot.points = FALSE, ...)
       if (panel.number() == 2) {
         panel.axis(side = "bottom", outside = TRUE)
       }
    }
) 

Imgur