我希望用更粗的线条绘制框.在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(...)
})
Run Code Online (Sandbox Code Playgroud) 我有以下代码,允许通过bwplot函数的分组垂直框图lattice.可重复的例子..
data(mpg, package = "ggplot2")
bwplot( hwy~class, data = mpg, groups = year,
pch = "|", box.width = 1/3,
auto.key = list(points = FALSE, rectangles = TRUE, space = "right"),
panel = panel.superpose,
panel.groups = function(x, y, ..., group.number) {
panel.bwplot(x + (group.number-1.5)/3, y, ...)
})
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我希望箱图是水平的,所以我改变了第一行,保持其他一切相等:
bwplot( class~hwy, data = mpg, groups = year, ...
Run Code Online (Sandbox Code Playgroud)
但图表就是这样出来的
.我试过玩代码没有成功.我有两个问题:首先,我怎么能,或者是否可以让箱图不相互叠加?其次,更一般地说,如何将颜色面板设置为灰度,因此情节会以灰色或黑白色调出现?
我以此数据帧为例:
>mydata <- rbind(data.frame(Col1 = rnorm(2*1000),Col2 =rep(c("A", "C"), each=1000),Col3=factor(rep(c("YY","NN"), 1000))),data.frame(Col1 = rnorm(1000),Col2 =rep(c("B")),Col3=factor(rep(c("YY","YN"), 500))))
Run Code Online (Sandbox Code Playgroud)
看起来像:
>head(mydata)
Col1 Col2 Col3
1 -0.1213684 A YY
2 0.1846364 A NN
3 0.4028003 A YY
4 1.4065677 A NN
5 -0.8669333 A YY
6 0.3295806 A NN
Run Code Online (Sandbox Code Playgroud)
因子类型的Col3有3个级别:NN YY YN
我想用格子bwplot制作一个箱线图,并为每个级别分配一个特定的颜色:
# NN:
red=rgb(249/255, 21/255, 47/255)
# YN:
amber=rgb(255/255, 126/255, 0/255)
# YY:
green=rgb(39/255, 232/255, 51/255)
Run Code Online (Sandbox Code Playgroud)
使用bwplot函数:
pl<-bwplot(mydata$Col1~mydata$Col3 | mydata$Col2,data=mydata,
ylab=expression(italic(R)),panel=function(...)
{panel.bwplot(...,groups=mydata$Col3, fill=c(red,amber,green))})
Run Code Online (Sandbox Code Playgroud)
这导致如下图:

显然,颜色与我的数据框中的级别无关,因为YY框并不总是绿色.有没有办法分配YY:绿色,NN:红色和YN:琥珀色?