以下是我的数据的最小示例以及我能够从this tutorial改编的情节:
require(lattice)
t <- c(0.88,3.52,7.04,10.56,18.48,29.92,29.6,52.8,70.4)
n <- 1000
mu.A <- c(0.4014165,0.2444396,0.2200015,0.1829841,0.2087899,0.1385284,0.2150571,0.2272082,0.1643309 )
mu.C <- c(0.4670488,0.3561108,0.1957407,0.1564677,0.1199911,0.1883665,0.1678103,0.1194251,0.1274065 )
C <- A <- numeric(0)
for (i in 1:length(mu.C)) {C <- c(C,rnorm(mu.C[i],sd=0.031))}
for (i in 1:length(mu.A)) {A <- c(A,rnorm(mu.C[i],sd=0.021))}
data.f <- data.frame(C,A,rep(t,each=n))
colnames(data.f) <- c("C","A","Time")
bwplot(C + A ~ factor(Time),
data=data.f,
xlab="Time",
ylab="P. Estimate",
outer=T, # This parameter makes sure that the right hand side variable gets an own panel
as.table=T,
panel = function(...,box.ratio) {
panel.violin(...,col="lightblue",
box.ratio=box.ratio)
panel.bwplot(...,box.ratio=.1,pch="|")
},
par.settings = list(box.rectangle=list(col="black"),
plot.symbol=list(pch=".",cex=.001),
strip=strip.custom(factor.levels=c("C","A"))
)
)
这是我的问题:此图没有合适的时间轴。它将t
的每个元素视为自己的一个类别,而不是连续的一个点。在实验中,测量时间,t
是所有参与者的平均响应时间。
我的方法是使用xyplot()
并使用panel.violin
作为面板功能。但是,这不起作用。在输出中,小提琴水平定向并且非常大。 R也需要很长时间来绘制情节,最终我必须杀死R-Studio会话:
xyplot(C + A ~ Time,
data=data.f,
xlab="Time",
ylab="P. Estimate",
panel = function(...) {
panel.violin(...,col="lightblue")
},
par.settings = list(box.rectangle=list(col="black"),
plot.symbol=list(pch=".",cex=.001),
strip=strip.custom(factor.levels=c("C","A"))
)
)
我不是在寻找一个只为我解决问题的人,而是告诉我在哪里犯了错误。
免责声明:这不是我的真实数据。它只是一种更方便的方式来重现数据,而无需在某处上传。