2013-01-03 6 views
7

プロットのタイトルは2行にしたいと思いますが、これはうまくいかず、なぜですか?どうすればそれを動作させることができますか? 私はbqoute内の環境(ここで、引数)を変更しようとした私は... bquoteは間違って何かを作ると思い2行にメインタイトルをプロット

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

が、私ドン(bquote見上げる?):

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

これは、ここで働きますどのような環境が必要なのか分かりません。ところで

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

は "BLA" とクレイジーなものを作ります。これを達成するための

答えて

10

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)))) 

は今、各出力は、リスト内のテキストが式に変換され、ラインすでに示唆したように、私はマルチテキスト使用する個人

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

enter image description here

4

一つの方法は、次のようにメインタイトルの下に行を追加するmtextを使用することです:

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

きれいソリューションがあるかもしれませんが、おそらくこれは、ニーズのために十分です。

11

をdo.call 。しかし、あなたが本当にそれをワンライナーになりたい場合は、あなたがatopを使用してbquoteを「ごまかす」ことができます。

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

それも、中央にきちんと両方のラインを揃えます。

関連する問題