4

関数を使用して2つのプロットを含む図を作成します

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

parコマンドを使用してそれを行う 1 つの方法を次に示します。

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 に答える
2

これを行うには、 orsplit.screenの代わりにfunction を使用できます。par(mfrow=...)layout

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

function を使用して、ある「画面」から別の「画面」に切り替えることができます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 に答える
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が言うように、プロットを呼び出すと、それ以降text()の呼び出しは最後のプロットでのみ機能します

ここに画像の説明を入力してください

于 2012-09-19T09:47:06.967 に答える