R 箱线图和xyplot重叠

R 箱线图和xyplot重叠,r,lattice,boxplot,bwplot,R,Lattice,Boxplot,Bwplot,我用我的数据做了一个条件箱线图,使用lattice库的bwclot函数 A1 <- bwplot(measure ~ month | plot , data = prueba, strip = strip.custom(bg = 'white'), cex = .8, layout = c(2, 2), xlab = "Month", ylab = "Total",

我用我的数据做了一个条件箱线图,使用
lattice
库的
bwclot
函数

    A1 <- bwplot(measure ~ month | plot , data = prueba,
              strip = strip.custom(bg = 'white'),   
              cex = .8, layout = c(2, 2),
              xlab = "Month", ylab = "Total",
              par.settings = list(
                box.rectangle = list(col = 1),
                box.umbrella  = list(col = 1),
                plot.symbol   = list(cex = .8, col = 1)),
              scales = list(x = list(relation = "same"),
                            y = list(relation = "same")))
我尝试使用
grid在同一个图形上绘制它们。从
gridExtra
库中排列

    grid.arrange(A1,B1)
但是有了这个,我没有重复数据,但是结果是这样的

我如何才能在“内部”绘制以曲线图为条件的箱线图中的降水量数据


谢谢

您需要创建自定义面板功能。我用内置的
数据演示:

假设您想使用
barley
数据创建一个简单的
bwclot
xyplot
。您的代码可能如下所示:

library(lattice)

bwplot(yield ~ year | variety , data = barley)
xyplot(yield ~ year | variety , data = barley)
要组合绘图,需要创建一个面板函数,该函数首先绘制默认的
panel.bwclot
,然后绘制
panel.xyplot
。试试这个:

bwplot(yield ~ year | variety , data = barley,
       panel = function(x, y, ...){
         panel.bwplot(x, y, fill="grey", ...)
         panel.xyplot(x, y, col="red", ...)
       }
)



有关执行此操作的一些信息,请参见
?xyplot
-向下滚动至
面板
参数的详细信息。

您需要创建自定义面板函数。我用内置的
数据演示:

假设您想使用
barley
数据创建一个简单的
bwclot
xyplot
。您的代码可能如下所示:

library(lattice)

bwplot(yield ~ year | variety , data = barley)
xyplot(yield ~ year | variety , data = barley)
要组合绘图,需要创建一个面板函数,该函数首先绘制默认的
panel.bwclot
,然后绘制
panel.xyplot
。试试这个:

bwplot(yield ~ year | variety , data = barley,
       panel = function(x, y, ...){
         panel.bwplot(x, y, fill="grey", ...)
         panel.xyplot(x, y, col="red", ...)
       }
)



?xyplot
的帮助中有一些关于执行此操作的信息-向下滚动到
面板
参数的详细信息。

使用
大麦
数据,与Andrie一样,使用
晶格额外
的另一种方法:

library(lattice)
library(latticeExtra)

bwplot(yield ~ year | variety , data = barley, fill = "grey") +
xyplot(yield ~ year | variety , data = barley, col = "red")

像Andrie一样使用
大麦
数据,另一种方法是使用
晶格额外

library(lattice)
library(latticeExtra)

bwplot(yield ~ year | variety , data = barley, fill = "grey") +
xyplot(yield ~ year | variety , data = barley, col = "red")

我需要了解面板功能如何正常工作,我会试试。谢谢你的回答。我需要了解面板功能如何正常工作,我会试试。谢谢你的回答。谢谢你@Pascal。这看起来很简单,但它不适用于我的数据。我使用了bwplot(…)+as.layer(xyplot(…),但它只绘制bwplot,没有给出任何错误。为什么要使用
as.layer()
?示例中没有as.layer()
。由于您试图同时绘制总计和百分比,我并不感到惊讶,因为它不起作用。很抱歉,我使用了
as.layer()
,因为没有它,并且error说as.layer(lay)中的
错误:参数“lay”丢失,没有默认值。无论如何,现在我再次尝试不使用
as.layer()
并且错误没有出现,看起来都正常工作,但它只绘制了第一个绘图(如果我使用first
BWClot
它会绘制它,如果我使用first
xyplot
它只绘制它的曲线,
%Precip
Total
大33倍。谢谢@Pascal。它看起来非常简单,但不能处理我的数据。我已经使用BWClot(…)+作为.layer(xyplot(…)),但它只绘制bwplot,没有给出任何错误。为什么要使用
as.layer()
?示例中没有
as.layer()
。由于您试图同时绘制总计和百分比,因此它不起作用并不奇怪。抱歉,我使用了
as.layer()
因为没有它,并且error在as.layer(lay)中表示
错误:参数“lay”丢失,没有默认值。无论如何,现在我在没有
as.layer()
的情况下重试了一次,错误没有出现,看起来都正常工作,但它只绘制了第一个绘图(如果我使用第一个
bwclot
它绘制它,如果我使用第一个
xyplot
它只绘制它的曲线,
%Precip
Total
大33倍。)。