2017-12-22 2 views
1

私はここでしばらく検索しましたが、私の質問は以前の質問/回答によって部分的に回答されました。私はMatlabからRを学んでいます。タイトルには、プロットの注釈についての質問があります。 Matlabでは、あらゆる種類のデータフォーマットを含むプロットアノテーションを作成するのはかなり簡単でした。私はすでにpasteを発見していました。ある程度)... parseは、例えば、r 2乗を表示するときなどに使用します。私の質問は、コードスニペット内の2つの注釈を、私に叫ぶことなく1つの注釈にどのように組み合わせるかです。 y'allの2つの注釈を持つ私のソリューションは、私が必要なもののために動作しますが、私は単にそれを行う方法を知りたいのですが...ggplot2:テキスト、下位/上付き文字、および計算値の注釈

a <- 30 # some coefficients 
b <- 70 
r2 <- 0.87 
anno1 <- paste("y = ",b,"ln(x) + ",a) # first annotation with a random equation 
anno2 <- paste("r^2 == ", r2) # second annotation with a random r squared 

Pdata <- data.frame("X" = 1:10, "Y" = 1:10) # some data 

ggplot(Pdata,aes(x=Pdata$X,y=Pdata$Y)) + 
    geom_point() + 
    annotate("text", x=2, y=8, label=anno1, parse=FALSE) + 
    annotate("text", x=2, y=7, label=anno2, parse=TRUE) 

ありがとう!ここで

答えて

1

はに包まれた用語を除き、その引数を引用しbquote bquote

ggplot() + 
    geom_point(aes(x = 1:4, y = 1:4)) + 
    annotate("text", x=2, y=3, 
      label = deparse(bquote(~y ==~ .(b) ~ln(x)~ + .(a) ~r^2 ==~ .(r2))), 
      parse = T) 

を使用して、要求された操作を行うための一つの方法である。()
注釈を評価され得るために、1つのトリックを表現をサポートしていません。それは仕事にそれは私が(私自身のプロジェクトのために)これを理解するためにしばらく時間がかかったが、彼女のそれを逆パースし、再度

enter image description here

+0

このコードを実行すると、実際のコードで実行しようとするとエラーが表示されます。エラーは です。 "美学は、長さ1またはデータ(1)と同じでなければなりません:ラベル" – Rincewind

+0

コードをもう少し見て、geom_points()ではなく、ggplot()に美学を置くことの違いは何ですか? – Rincewind

+0

@Rincewind ggplot呼び出しで美学が提供されたとき、それは後続のすべての基底に渡されます。ただ1つの基底がある場合、これは基底にデータを入れることと同じです。しかし、より複雑な視覚化のために、私は通常、異なる幾何学で複数の異なるデータ呼び出しを持っています。あるいは、いくつかの幾何学は単純にいくつかの美学をサポートしていないので、gesplot呼び出しに 'aes'を置かないようにします。これは単なる設定であり、gomplotからエイムの通過を止めるには、すべてのgeom呼び出しで 'inherit.aes = F'を設定します。これまでのところ、私はそれを再現することはできません。私はそれを調べることができるように例を提供できますか? – missuse

0

それを解析することですEソリューションです:

anno3 <- paste("'y ='~",b,"~'ln(x) +'~",a,"~r^2==~", r2) 

+ annotate("text", x=2, y=6, label=anno3, parse=TRUE)

単一引用符を使用して、プロットに追加しますが、評価しないようにテキストを識別します。結合された結果は、式のように記述する必要があります。

+0

これは機能します!今私はそれの背後にある論理を理解しようとしています... – Rincewind

関連する問題