bwplot的boxplot lwd参数的等价物

时间:2013-09-17 16:57:52

标签: r plot lattice bwplot

我希望用更粗的线条绘制框。在boxplot函数中,我只需添加lwd=2,但在格子bwplot中,我可以拔出头发并找不到解决方案!enter image description here (盒子我的意思是上图中的蓝色东西)

要使用的示例代码:

require(lattice)
set.seed(123)
n <- 300
type <- sample(c("city", "river", "village"), n, replace = TRUE)
month <- sample(c("may", "june"), n, replace = TRUE)
x <- rnorm(n)
df <- data.frame(x, type, month)

bwplot(x ~ type|month, data = df, panel=function(...) {
    panel.abline(h=0, col="green")
    panel.bwplot(...)
})

3 个答案:

答案 0 :(得分:6)

正如约翰保罗指出的那样,线宽由格子图形参数列表的box.rectanglebox.umbrella分量控制。 (为了将来参考,键入names(trellis.par.get())是扫描由该列表控制的图形属性列表的快速方法。)

这是为一个或多个特定数字设置这些选项的稍微更简洁的方法:

thickBoxSettings <- list(box.rectangle=list(lwd=2), box.umbrella=list(lwd=2))

bwplot(x ~ type|month, data = df, 
       par.settings = thickBoxSettings,
       panel = function(...) {
           panel.abline(h=0, col="green")
           panel.bwplot(...)
       })

enter image description here

答案 1 :(得分:4)

您可以做的一件事是获取盒子的格子设置,然后更改它们。尝试

rect.settings<-trellis.par.get("box.rectangle") #gets all rectangle settings
rect.settings$lwd<-4  #sets width to 4, you can choose what you like
trellis.par.set("box.rectangle",rect.settings)

将这些放在你的bwplot调用之上,它应该这样做。

框矩形设置还有颜色,填充等。

编辑添加,如果您获得box.umbrella,则可以对其进行编辑,以更改框内上下方的内容。

答案 2 :(得分:3)

需要提及格子图的另一个特征。它们实际上是对象,因此存在用于修改其列表表示的方法;

myBW <- bwplot(x ~ type|month, data = df, panel=function(...) {
    panel.abline(h=0, col="green")
    panel.bwplot(...)
})
newBW <- update(myBW, par.settings=list(box.rectangle=list(lwd=4) ))
plot(newBW)   # need to print or plot a grid object

您还可以使用trellis.focus并应用更多更新功能来覆盖新数据或文字。