在格子xyplot中重新排列面板

时间:2014-07-07 21:51:46

标签: r panel lattice

下面是我只使用单个变量时使用的代码。使用index.cond如下所述,用于切换最终图表中面板的顺序。但是,现在我正在调整两个变量,下面的代码不能切换不同面板的位置。如何修改index.cond工作?这是我的代码,下面是图表和示例数据的图片:

libs <- c('lattice', 'latticeExtra', 'gridExtra', 'MASS', 'colorspace', 'plyr', 'Hmisc', 'scales')
lapply(libs, require, character.only = T)


conversion_test <- read.table("Desktop/FAST/convert_test/Results/fasconvert_Results", sep="\t",   header=TRUE)


scatter.lattice <- xyplot(Time.to.Completion..s. ~ Number.of.Sequences | Length * Conversion, data  = conversion_test, ylab = "Time to Completion (s)", xlab = "Number of Sequences", index.cond=list(c(2,1,4,3)), pch=16, 
                         panel = function(x, y, ...) {
                         panel.xyplot(x, y, ...)
                         lm1 <- lm(y ~ x)
                         lm1sum <- summary(lm1)
                         r2 <- lm1sum$adj.r.squared
                         panel.abline(a = lm1$coefficients[1], 
                                      b = lm1$coefficients[2])
                         panel.text(labels = 
                                      bquote(italic(R)^2 == 
                                               .(format(r2, 
                                                        digits = 5))),
                                    x = 500000, y = 10)
                         },
                       xscale.components = xscale.components.subticks,
                       yscale.components = yscale.components.subticks,
                       as.table = TRUE)
scatter.lattice

我想切换列的顺序。 Output

以下是一个示例数据集:

Numberofseq timetoCompletion Length Conversion
25000         9.3             100bp    ClustalW
250000        45              100bp    ClustalW
25000         9.3             100bp    Fasta
250000        45              100bp    Fasta
25000         9.3             1000bp    ClustalW
250000        45              1000bp    ClustalW
25000         9.3             1000bp    Fasta
250000        45              1000bp    Fasta  

1 个答案:

答案 0 :(得分:3)

?xyplot帮助页面的index.cond下,

  

如果index.cond是一个列表,它必须与条件变量的数量一样长,并且第i个分量必须是级别(g_i)的有效索引向量,其中g_i是第i个情节中的条件变量

因为你有两个条件变量,你应该有一个长度为2的列表。每个变量都有两个级别。我仍然不明白你是如何为这些情节编号的,但是根据你的因素是如何平衡的,试试某种形式的

index.cond = list(2:1, 2:1)
#or
index.cond = list(2:1, 1:2)

但与as.table一起使用这似乎有点奇怪。