BWR绘图区顶部的绘图框

BWR绘图区顶部的绘图框,r,R,我用的是我的一些想法。我想在格子顶部画一个框bwclot 我想将提供的解决方案与lattice bwplot上的箱线图结合起来。理想纯格点解 样本数据: rdata <- data.frame(y=rnorm(1000,2,2),v1=rnorm(1000,1,1),v2=rnorm(1000,3,3), v3=rnorm(1000,4,4),v4=rnorm(1000,5,5),v5=rnorm(1000,3,3)) 如何在latticebw

我用的是我的一些想法。我想在格子顶部画一个框
bwclot

我想将提供的解决方案与lattice bwplot上的箱线图结合起来。理想纯格点解

样本数据:

rdata <- data.frame(y=rnorm(1000,2,2),v1=rnorm(1000,1,1),v2=rnorm(1000,3,3),
                      v3=rnorm(1000,4,4),v4=rnorm(1000,5,5),v5=rnorm(1000,3,3))
如何在lattice
bwplot
中执行相同操作?有可能吗?谢谢

仅为bwplot提供一些起点:

library(lattice)
library(gridExtra)    
plot1 <- lapply(1:2, function(i) {bwplot(~rdata[,i],rdata)})
plot2 <- lapply(1:3, function(i) {bwplot(~rdata[,i],rdata)})
plot3 <- lapply(1:4, function(i) {bwplot(~rdata[,i],rdata)})

print(do.call(grid.arrange, c(plot1,plot2,plot3)))
库(晶格)
图书馆(gridExtra)

plot1在这里,我们可以创建一个帮助函数,该函数可以生成一个面板函数,我们可以使用该函数将彩色框添加到框图中

getPanelBoxCol<-function(cuts, colors=c("red","green","yellow"), yat=1.5) {
    require(grid)
    cuts<-sort(unique(c(0, cuts, 1)))
    function(x, y, ...) {
        xbr <- quantile(x, cuts)
        xx<-rowMeans(embed(xbr,2))
        yy<-rep(yat, 3)
        grid.rect(x=xx,
            y=yy, 
            width=diff(xbr),
            height=.1,
            gp=gpar(fill=colors),
            default.units="native"
        )
    }
}
在这里,我们还为
y
轴增加了一点空间,以容纳长方体。这导致


简直太神奇了!非常感谢。
getPanelBoxCol<-function(cuts, colors=c("red","green","yellow"), yat=1.5) {
    require(grid)
    cuts<-sort(unique(c(0, cuts, 1)))
    function(x, y, ...) {
        xbr <- quantile(x, cuts)
        xx<-rowMeans(embed(xbr,2))
        yy<-rep(yat, 3)
        grid.rect(x=xx,
            y=yy, 
            width=diff(xbr),
            height=.1,
            gp=gpar(fill=colors),
            default.units="native"
        )
    }
}
panel.boxcol<-getPanelBoxCol( c(0, .25, .6, 1) )
rdata<-data.frame(
    y=rnorm(100,2,2)
)
bwplot(~y,rdata, 
    prepanel=function(x,y,...) {
        list(ylim=c(.5, nlevels(y)+.6), xlim=lattice:::scale.limits(x))
    }, 
    panel=function(x,y,...) {
        panel.bwplot(x,y,...)
        panel.boxcol(x,y,...)
    },
    scales=list(y=list(draw=F))
)