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

How do I change the axis on a single panel in a lattice plot

我已经尝试了一段时间来解决格子图的问题。我的面板数量不均匀,因此如果我施加非交替轴标签,其中一个面板没有 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") 
        } 
) 

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

"Error in get("lattice.status", envir = .LatticeEnv)[[prefix]][[name]] : 下标越界"

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

谢谢, 马特

你必须在剪裁方面有点创意。

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)
       }
    }
)