【问题标题】:Equivalent of boxplot lwd parameter for bwplot等效于 bwplot 的箱线图 lwd 参数
【发布时间】:2013-09-17 16:57:52
【问题描述】:

我想用较粗的线绘制方框。在boxplot 函数中我只是简单地输入了lwd=2,但在格子中bwplot 我可以把头发拉出来,但还没有找到解决方案! (我的意思是上图中的蓝色框)

使用的示例代码:

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

【问题讨论】:

    标签: r plot lattice bwplot


    【解决方案1】:

    正如 John Paul 所指出的,线宽由 lattice 图形参数列表的 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(...)
           })
    

    【讨论】:

    • 谢谢乔希! OMG,为什么 lattice 如此反直觉!我已经花了将近两个小时来处理这个问题,这是我在会议上演讲前最严重的时间压力!可惜我离线了,不能在这里问..
    【解决方案2】:

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

    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,您可以对其进行编辑以更改框上方和下方的线条的外观。

    【讨论】:

      【解决方案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 并应用进一步的更新功能来覆盖新的数据或文本。

      【讨论】:

      • 感谢 DWin! OMG,为什么 lattice 如此反直觉!我已经花了将近两个小时来处理这个问题,这是我在会议上演讲前最严重的时间压力!可惜我离线了,不能在这里问..
      • 这是一种完全不同的(在一定程度上是面向对象的)绘图范式。专为更强大的功能而设计,它确实需要采用更以列表为导向的思维方式。
      • 嗯,真的,但是当文档排列得不是很好并且内容不直观时,它是如此令人沮丧。例如,help.search("box.rectangle") 什么也不返回。最好有一些文档,其中只有一张示例图的图片和您需要设置的所有这些参数的名称......
      • 是的。我明白。我认为购买萨卡的书是物有所值的。它有很好的讨论和有用的绘制参数名称的图表。当我开始阅读help('lattice-package', package="lattice") 页面时,我想知道为什么我以前没有这样做过。
      猜你喜欢
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      相关资源
      最近更新 更多