这是代码示例
set.seed(1)
tmp <- matrix(replicate(4, rnorm(50)), ncol=4)
panel.cor <- function(x, y, digits=2, prefix="", cex.cor, ...)
{
usr <- par("usr"); on.exit(par(usr))
par(usr = c(0, 1, 0, 1))
rp <- cor(x, y, method="pearson", use="pairwise.complete.obs")
rs <- cor(x, y, method="spearman", use="pairwise.complete.obs")
rp <- format(rp, digits=digits)
rs <- format(rs, digits=digits)
txt <- substitute(list(R[p] == rp, R[s] == rs), list(rp=rp, rs=rs))
if(missing(cex.cor)) cex.cor <- 0.8/strwidth(txt)
text(0.5, 0.5, txt, cex = 1.5)
}
panel.my.points <- function(x, y) {
points(x, y)
abline(0, 1)
}
pairs(tmp,
lower.panel=panel.cor,
upper.panel=panel.my.points,
labels=c("model 1\nD1", "model 2\nD1", "model 1\nD2", "model 2\nD2"))
返回绘图
但我想在不同的行上显示两个相关系数 Pearson 和 Spearman。对于普通文本,我插入 \n
来生成两行输出(如对角线上的标签)。我怎样才能在两行中输出相关系数?
最佳答案
分别定义 Pearson(下面代码中的 txta
)和 Spearman (txtb
) 系数,然后调用 text
两次怎么样:
set.seed(1)
tmp <- matrix(replicate(4, rnorm(50)), ncol=4)
panel.cor <- function(x, y, digits=2, prefix="", cex.cor, ...)
{
usr <- par("usr"); on.exit(par(usr))
par(usr = c(0, 1, 0, 1))
rp <- cor(x, y, method="pearson", use="pairwise.complete.obs")
rs <- cor(x, y, method="spearman", use="pairwise.complete.obs")
rp <- format(rp, digits=digits)
rs <- format(rs, digits=digits)
txt <- substitute(list(R[p] == rp, R[s] == rs), list(rp=rp, rs=rs))
txta <- substitute(R[p] == rp, list(rp=rp))
txtb <- substitute(R[s] == rs, list(rs=rs))
if(missing(cex.cor)) cex.cor <- 0.8/strwidth(txt)
text(0.5, 0.6, txta, cex = 1.5)
text(0.5, 0.4, txtb, cex = 1.5)
}
panel.my.points <- function(x, y) {
points(x, y)
abline(0, 1)
}
pairs(tmp,
lower.panel=panel.cor,
upper.panel=panel.my.points,
labels=c("model 1\nD1", "model 2\nD1", "model 1\nD2", "model 2\nD2"))
这给出:
关于r - 使用表达式等创建多行标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11969838/