我需要创建一个具有三个段颜色的segplot:一个用于间隔低于1,一个用于间隔优于1,另一个用于包含1的间隔.
df <- read.table(header=T, text='
geno n rd lower upper
A7002 7 1.12 0.94 1.30
ANTA82RR 12 1.00 0.91 1.09
BR05-83097 5 0.84 0.41 1.27
BR05-86275 5 0.64 0.25 0.93
BRM04-1660 7 1.26 1.02 1.50
BRN03-1404 5 1.03 0.88 1.18
BRN05-0656 5 0.57 0.47 0.67
')
library(latticeExtra)
segplot(reorder(factor(geno), rd) ~ lower + upper,
data = df,
xlim=c(-1, 2.5),
draw.bands = FALSE, centers = rd,
panel = function (x,y,z,...){
panel.segplot(x,y,z,...)
panel.abline(v=1,lty=3)
}
)
Run Code Online (Sandbox Code Playgroud)
提前致谢.
出于某种原因segplot似乎并不groups=像大多数格子图那样尊重参数.这是一个混乱的工作,第一步是生成分组变量
df$group<-with(df, ifelse(lower>1, "superior", ifelse(upper<1, "inferior","contain")))
segplot(reorder(factor(geno), rd) ~ lower + upper,
data = df,
groups=group,
xlim=c(-1, 2.5),
draw.bands = FALSE, centers = rd,
panel = function(...) {
panel.abline(v=1,lty=3)
panel.superpose(...)
},
panel.groups = function (x,y,z,subscripts,col,col.line,centers,...){
panel.segplot(x,y,z[subscripts],centers=centers[subscripts],subscripts=T,
col=col.line,...)
}
)
Run Code Online (Sandbox Code Playgroud)
