如何在一个面板中绘制几个小提琴图作为R中使用点阵的时间函数?

时间:2013-11-18 14:30:50

标签: r plot lattice

以下是我的数据的最小示例以及我能够从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"))
       )
)

我不是在寻找一个只为我解决问题的人,而是告诉我在哪里犯了错误。

免责声明:这不是我的真实数据。它只是一种更方便的方式来重现数据,而无需在某处上传。

0 个答案:

没有答案