7

コード例:

rsq <- round(cor(mtcars$disp, mtcars$mpg)^2, 2) # rsq = 0.72

ggplot(mtcars, aes(x = disp, y = mpg)) +
  geom_point() +
  geom_smooth(method = lm, aes(color = "Linear")) +
  scale_color_discrete(labels = expression(paste("R"^2, " = ", rsq)))

凡例を のように表示したいと思いますR² = 0.72
² のユニコード記号を使用して上付き文字を取得できることはわかっていますが、一般に、オブジェクトに格納されている数式と計算値を組み合わせる方法が必要だと思います。

evalと のさまざまな組み合わせを試してみましたpasteが、同じ問題が発生し続けているようです。

編集#1:この回答に従って次のように
使用してみました:bquote

scale_color_discrete(labels = bquote(R^2 == .(rsq)))

凡例を としてレンダリングするだけであることが判明しました==

編集#2:
以下の答えは機能しますが、次のようなより複雑な式には非常に不便です。

私はまだより簡単な解決策を望んでいます。

4

2 に答える 2

9

bquote物事は近かったことが判明しました。
これはうまくいきます (最適とは言えませんが):

  scale_color_discrete(labels = as.expression(bquote(R^2~"="~.(rsq))))

また働いています:

 scale_color_discrete(labels = as.expression(bquote(R^2 == .(rsq))))

どうやら、要素を実際にing せ~ずに一緒に「貼り付ける」必要がありますか? paste()そしてas.expressionexpressionできなかったことをします。正確に何が起こっているのかわかりませんが、残念ながら動作します:

どうもありがとう、ピーター・ダルガード

于 2016-03-12T14:50:05.893 に答える