4

我使用一个函数创建一个包含两个图的图形,即

data1<-1:3

basic<-function(data1){
par(mfrow=c(2,1))
plot(data1)
plot(data1)
}

basic(data1)

现在我想在绘图中添加文本,而不必将其包含在函数中。但我只能将文本添加到底部情节(见下文)。

text(x=c(1.5,1.6,1.7),y=c(2,2.1,2.2), labels=c("X","Y","Z"))

在此处输入图像描述

如何将文本添加到函数外部的顶部图?(我有很多使用相同功能创建的图形,但需要在每个图形的稍微不同的位置放置略有不同的文本标签)。感谢您的任何建议。

4

3 回答 3

2

为此,您可以使用 functionsplit.screen而不是par(mfrow=...)or layout

split.screen(c(2,1)) # Two rows of plots, one column.

然后,您可以使用功能从一个“屏幕”切换到另一个screen。有关?split.screen更多信息,请参阅。

在您的示例中,提供以下内容:

basic <- function(data1){
    split.screen(c(2,1))
    screen(1)
    plot(data1)
    screen(2)
    plot(data1)
    }

basic(data1)
screen(1, new=FALSE)
text(x=c(1.5,1.6,1.7),y=c(2,2.1,2.2), labels=c("X","Y","Z"))

在此处输入图像描述

于 2012-09-19T11:40:45.707 回答
2

这是使用par命令执行此操作的一种方法:

data1 <- 1:3

basic <- function(data1) {
    out <- list()
    par(mfrow=c(2,1))

    plot(data1)
    out[[1]] <- par(no.readonly=TRUE)

    plot(data1)
    out[[2]] <- par(no.readonly=TRUE)

    invisible(out)
}

pars <- basic(data1)


par(pars[[1]])
par(mfg=c(1,1))
text( x=c(1.5,1.6,1.7), y=c(2,2.1,2.2), labels=c("X","Y","Z") )

par(pars[[2]])
par(mfg=c(2,1))
text( x=c(1.5,1.6,1.7), y=c(2,2.1,2.2), labels=c("A","B","C") )

par(pars[[1]])
par(mfg=c(1,1))
text( x=c(1.7,1.6,1.5), y=c(2,2.1,2.2), labels=c("X","Y","Z") )

par(pars[[2]])
par(mfg=c(2,1))
text( x=c(1.7,1.6,1.5), y=c(2,2.1,2.2), labels=c("A","B","C") )
于 2012-09-19T16:50:02.523 回答
1

您可以首先概述不同的文本,例如

data1<-1:3

text1 <- data.frame(x=c(1.5,1.6,1.7),y=c(2,2.1,2.2), labels=c("X","Y","Z"))
text2 <- data.frame(x=c(2,2.9,1.0),y=c(2,2.1,2.2), labels=c("X","Y","Z"))

然后把它们放在你的函数中

basic<-function(data1){
par(mfrow=c(2,1))
plot(data1)
text(text1)
plot(data1)
text(text2)
}

basic(data1)

正如@Andrie 所说,调用 plot 意味着任何进一步text()的调用都只会在最后一个情节上起作用

在此处输入图像描述

于 2012-09-19T09:47:06.967 回答