2017-09-05 53 views
2

小文字の区切り文字の後に3桁を表示するには、注釈内のすべての浮動小数点をggplotにする必要があります。私はこの問題に直面しています:ggplotの注釈で固定小数点を表示

require(ggplot2) 
data(iris) 
a <- 1.8 
b <- 0.9 

ggplot(iris, aes(Sepal.Length, Petal.Length))+ 
    geom_point()+ 
    annotate("text", 7, 3, 
      label = paste0("y == ", format(a, digits = 3, nsmall = 3), " %*%z^", 
          format(b, digits = 3, nsmall = 3)), parse = TRUE) 
ggplot(iris, aes(Sepal.Length, Petal.Length))+ 
geom_point()+ 
annotate("text", 7, 3, 
      label = sprintf("y == %0.3f %%*%%z^ %0.3f", a,b), parse = TRUE) 

両方とも小数点以下1桁のプロットを生成します。 parse = FALSEに変更すると、プロットには正しい小数点以下の桁数が付いていますが、その形式は(明らかに)予想されていたものとはかなり離れていることは明らかです。

テキストをハード紹介する以外に、これを達成するために他にどのようなオプションがありますか?

+0

これは 'plotmath'規則に起因すると思われる:'プロット(1、1、メイン=パース(テキスト=はsprintf( "Y ==%の0.3F %% * %% Z ^% 0.3f "、a、b)))'も末尾の数字を削除します。 –

答えて

5

数字に引用符を付けると機能します。

ggplot(iris, aes(Sepal.Length, Petal.Length))+ 
    geom_point()+ 
    annotate("text", 7, 3, label = sprintf("y == '%0.3f' %%*%%z^ '%0.3f'", a,b), parse = TRUE) 

ここで、Iは、文字列これにより

[1] "y == '1.800' %*%z^ '0.900'" 

もたらす'%0.3f'%0.3fを変更し、数字はもはやnumercial値として解釈されません。 1.800は数値1.8を表しますが、'1.800'は文字列1.800を表します。

enter image description here