0

伙计们,

我有以下示例,其中我将 lattice 用于(随机)数据的散点图。我想要做的是将三个变量粘贴到一个新行中。问题出在需要下标的第三个变量上。

下面找到的代码将产生与描述相同的问题:

library(lattice)
library(grid)

set.seed(20)
a <- data.frame(par1=runif(10, min=1, max=100),par2=runif(10, min=1, max=100))

print(xyplot( par1 ~ par2,
              data=a,
              panel = function(x,y){
                n <- length(x)
                r <- round(cor(x, y, use="pairwise.complete.obs"), 2)
                rc <- 1
                panel.abline(a=0, b=1, lty=2, col="grey59", lwd=1.5)
                panel.xyplot(x,y, type = c("p", "g"), col="grey29", cex=0.75)
                panel.abline(lm(y ~ x), col = "red", lwd=1.5)
                grid.text(paste("n=",length(x), "\n", "r=", r, "\n", expression(paste(r[c])), "=", rc, sep=""), 0.60, .90, gp=gpar(col="black", fontsize=11), just="left")
              }
))
4

2 回答 2

1

如果您希望 R 为您计算线高,另一种方法是使用不可见的 grid.table,

library(gridExtra)
multiline_text <- function(label){
 grid.table(as.matrix(strsplit(label, "\\n")[[1]]), parse=TRUE,
                  theme=theme.list(gpar.corefill = gpar(fill = NA, col = NA),
                                   core.just = "center"))
}
txt <- "First~line \n italic('see that slant') \n integral(f, a, b)"
grid.newpage() ; multiline_text(txt)  

在此处输入图像描述

于 2013-05-16T10:36:19.057 回答
0

正如@baptiste 所建议的,可以更改代码以避免混合换行符和表达式,如下所示:

library(lattice)
library(grid)

set.seed(20)
a <- data.frame(par1=runif(10, min=1, max=100),par2=runif(10, min=1, max=100))

print(xyplot( par1 ~ par2,
              data=a,
              panel = function(x,y){
                n <- length(x)
                r <- round(cor(x, y, use="pairwise.complete.obs"), 2)
                rc <- 1
                panel.abline(a=0, b=1, lty=2, col="grey59", lwd=1.5)
                panel.xyplot(x,y, type = c("p", "g"), col="grey29", cex=0.75)
                panel.abline(lm(y ~ x), col = "red", lwd=1.5)
                grid.text(paste("n=",length(x), "\n", "r=", r, "\n", sep=""), 0.60, .90, gp=gpar(col="black", fontsize=11), just="left")
                grid.text(bquote(r[c] == .(rc)), 0.60, .86, gp=gpar(col="black", fontsize=11), just="left")
              }
))

如果您有其他选择,将很高兴看到它们。

于 2013-05-16T08:59:32.113 回答