7

プロットのタイトルを 2 行で表示したいのですが、うまくいきません。なぜですか? どうすればそれを機能させることができますか?

CVal<-1 
SumEpsVal<-2 
plot(1:10, main=bquote(paste("C=", .(CVal), " \n ", sum(xi), "=", .(SumEpsVal) )))

これはここで機能します:

plot(1:10, main=paste("C=1", "\n", "SumXi=2"))

bqoute は何か間違っていると思います... (?bquote を調べてください) bqoute (where 引数) で環境を変更しようとしましたが、どの環境を使用すればよいかわかりません。

ところで:

plot(1:10, main=bquote(paste("C=", .(CVal), "bla \n ", sum(xi), "=", .(SumEpsVal) )))

「ブラ」で何かを狂わせます。

4

3 に答える 3

12

個人的には、すでに提案されているようにmtextを使用します。しかし、本当にワンライナーにしたい場合は、次をbquote使用して「チート」できatopます。

plot(1:10, main=
  bquote(atop(paste("C=",.(CVal)), paste(sum(xi),"=",.(SumEpsVal)))))

両方の線を中央にきれいに揃えます。

于 2013-01-03T11:02:36.147 に答える
11

根本的な問題は、plotmath が出力される式内の改行をサポートしていないことです。

Control characters (e.g. \n) are not interpreted in character strings in plotmath, 
  unlike normal plotting.

各行を個別に作成して出力する必要があります。

例えば ​​:

Lines <- list(bquote(paste("C=", .(CVal))),
              bquote(paste(sum(xi), "=", .(SumEpsVal))))

各行を出力するようになりました リスト内のテキストは式 do.call に変換されます

mtext(do.call(expression, Lines),side=3,line=0:1)

ここに画像の説明を入力

于 2013-01-03T10:46:47.330 に答える
4

これを実現する1つの方法はmtext、次のようにメインタイトルの下に行を追加することです。

plot(1:10, main=bquote(paste("C=", .(CVal))))
mtext(bquote(paste(sum(xi), "=", .(SumEpsVal) )),side=3,line=0)

よりきれいな解決策があるかもしれませんが、おそらくこれはあなたのニーズには十分です。

于 2013-01-03T10:22:01.997 に答える