【问题标题】:How do I change the axis on a single panel in a lattice plot如何更改格子图中单个面板上的轴
【发布时间】:2017-02-09 19:50:14
【问题描述】:

我一直在尝试解决格子图的问题。我的面板数量不均匀,因此如果我施加非交替轴标签,其中一个面板没有 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)的底部找到一个轴?

谢谢, 马特

【问题讨论】:

    标签: r lattice axis-labels


    【解决方案1】:

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

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

    【讨论】:

    • @MatthewSnyder -- 我很高兴它对你有用。如果您认为它解决了您的问题,请考虑接受它作为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2015-04-01
    • 1970-01-01
    • 2018-11-16
    相关资源
    最近更新 更多