Boxplot和xyplot重叠

时间:2014-08-04 08:43:57

标签: r lattice boxplot bwplot

我使用bwplot库的lattice函数完成了包含我的数据的条件箱图。

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

然后,我已经完成了一个xyplot,因为我想使用xyplot库中的lattice将降水数据添加到上一个图表中。

    B1 <- xyplot(precip ~ month | plot, data=prueba,
   type="b",
   ylab = '% precip',
   xlab = 'month',
   strip = function(bg = 'white', ...)
     strip.default(bg = 'white', ...),
   scales = list(alternating = F,
                 x=list(relation = 'same'),
                 y=list(relation = 'same')))

我尝试使用grid.arrange库中的gridExtra在同一个图表上绘制它们:

    grid.arrange(A1,B1)

但有了这个,我不会重叠数据,但结果就是这样 boxplot and xyplot

我如何在由情节调节的箱形图“内部”绘制沉淀数据?

谢谢

2 个答案:

答案 0 :(得分:2)

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

想象一下,您想要使用bwplot数据创建一个简单的xyplotbarley。您的代码可能如下所示:

library(lattice)

bwplot(yield ~ year | variety , data = barley)
xyplot(yield ~ year | variety , data = barley)

要合并绘图,您需要创建一个面板函数,首先绘制默认的panel.bwplot,然后是panel.xyplot。试试这个:

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

enter image description here


?xyplot的帮助中有一些关于这样做的信息 - 向下滚动到panel参数的详细信息。

答案 1 :(得分:2)

使用Andrie所做的barley数据,使用latticeExtra的另一种方法:

library(lattice)
library(latticeExtra)

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

enter image description here