我正在尝试将条形图与 xyplot(带有回归线)和两个值完全不同的变量结合起来。
这是我的数据:https ://www.dropbox.com/s/aacbkmo577uagjs/example.csv
根据下面的代码,面板中有两个数值变量“rb”和“rae”以及几个因子变量(sample.size、effect.size、allocation.design、true.dose)。变量“rae”应显示在条形图中(理想情况下在背景中以淡色显示),而变量“rb”应显示在带有回归线的 xyplot 中。有两个主要问题:
(1) 如何组合/叠加两种类型的图表?(2) 如何自定义坐标轴标签(y-scale的不同比例)
对于(1),我知道如何将不同类型的图形与 ggplot2 组合,但使用 lattice 也应该可以,对吗?我尝试了“doubleYScale”,这似乎不起作用。
对于 (2),我只完成了在“scales”选项中使用“relation='free'”作为 y 比例(参见代码)。这很好,因为重点是值的重要范围。但是,如果在左右外侧额外绘制轴标签(分别为“rae”和“rb”),则更合适。
这是到目前为止的代码(由 Dieter Menne 修改为独立的)
library(lattice)
library(latticeExtra)
df.dose <- read.table("example.csv", header=TRUE, sep=",")
df.dose <- transform(df.dose,
sample.size=as.factor(sample.size),
true.dose = as.factor(true.dose))
rae.plot <- xyplot(
rae ~ sample.size | allocation.design*true.dose,
df.dose, as.table=TRUE,
groups = type,
lty = 1, jitter.x=TRUE,
main="RAE",
scales=list(y=list(draw=F, relation="free", tck=.5)),
panel = function(x,y) {
panel.xyplot(x,y,jitter.x=TRUE)
panel.lmline(x,y, col="darkgrey", lwd=1.5)
})
useOuterStrips(rae.plot)
rb.plot <- barchart(
rb ~ sample.size | allocation.design*as.factor(true.dose),
df.dose, as.table=TRUE,
groups = type,
key=list(
text=list(levels(as.factor(df.dose$type))),
scales=list(y=list(draw=F, relation="free", tck=.5)),
main="RB"))
useOuterStrips(rb.plot)