2012-12-28 8 views
7

ラベルに指数を持つようにしようとしています。ここで私はプロットテキストの式を使用する - 名前ではなく変数の値を印刷する

vall = format(cor(x,y)*cor(x,y),digits=3) 
eq <- expression(paste(R^2," = ",vall,sep="")) 
text(legend.x,legend.y,eq,cex=1,font=2) 

を持っていますが、テキストは単に私が実際バルは(テキスト「バル」と省略)に表示するために取得するにはどうすればよいこの enter image description here

ようなコードだ

+1

重複? http://stackoverflow.com/questions/4973898/combining-paste-and-expression-functions-in-plot-labels –

+1

これは重複しているとは思わないが、この記事のタイトルは少し誤解を招く。指数があなたの問題ではないように見えるので、問題を反映させるためにタイトルを再フォーマットすることを提案してもよいでしょうか。 –

+0

'sep =" "'ここでは何もしません(空の文字列を追加します)。これは 'base :: paste'ではなく' plotmath'です。ここで傷つけることはありませんが、空でない文字列が指定されていれば、あなたが望むことはしません。 –

答えて

13

bquote()をお試しください例えば:あなたの例は動作しません

set.seed(1) 
vall <- format(rnorm(1),digits=3) 
eq <- bquote(bold(R^2 == .(vall))) 
sq <- seq(0, 1, by = 0.1) 
plot(sq, sq, type = "n") 
text(0.5, 0.5, eq) 

理由は、Rはvallを評価して終わることがないということです。

> eq2 <- expression(paste(R^2," = ",vall,sep="")) 
> eq2 
expression(paste(R^2, " = ", vall, sep = "")) 

plotmathは、このうち何かを作るしようとしますが、基本的にvallは文字通りに解釈されます。

一般に、プロットマス式ではpaste()は必要ありません。標準演算子とレイアウト演算子を使用して式を作成できます。例えば、製造されたものあなたの例(未評価のvall)と同等の発現のために、あなたが本当に必要なのは次のとおりです。

expression(R^2 == vall) 

bquote()は、式の中でその値に置き換えられたオブジェクトを持っている一つの方法です。置き換えたいオブジェクトをその値で囲んで.()にします。 Rはオブジェクトを探し、その値を取り出して式に挿入します。

また、別のインタフェースを使用したこれに対する別の方法については、substitute()も参照してください。

+0

徹底的な説明+1 –

+0

これはどちらもうまくいかない:式(R^2 == vall) – CodeGuy

+0

しかし、bquoteはうまくいった。ありがとう – CodeGuy

関連する問題