重排 lattice xyplot 中的面板

3
以下是我在仅针对单个变量进行条件约束时使用的代码。使用下面的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

我希望可以交换列的顺序。 输出
以下是示例数据集:
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  

如何切换顺序?您想得到什么输出结果? - MrFlick
我想交换列的顺序。更具体地说,从上图从左到右、从上到下编号,我想要的顺序是2、1、4、3。 - Darwin
1个回答

3
?xyplot帮助页面中的index.cond部分得知:
如果index.cond是一个列表,那它的长度必须与条件变量的数量一样长,并且第i个组件必须是levels(g_i)的有效索引向量,在此g_i是绘图中的第i个条件变量。
因此,由于您有两个条件变量,所以应该有一个长度为两个的列表。每个变量都有两个水平。我仍然不明白您如何为这些图编号,但根据您的因子级别化方式,请尝试某种形式的编码。
index.cond = list(2:1, 2:1)
#or
index.cond = list(2:1, 1:2)

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

我现在正在学习R语言,以便为出版物创建图表,因此我大多数时间都是复制代码。我将删除as.table。 - Darwin
4
在格子图中,默认的布局是从底部向上计算行数。如果想要从顶部向下显示,请使用 lattice.options(default.args = list(as.table = TRUE)) - Philippe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接