2017-09-05 156 views
2

我需要在註解中註釋ggplot中的所有浮點數以在小數點分隔符後顯示3位數字。但我面臨這個問題:在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) 

都產生地塊只有一個小數。很明顯,如果我更改爲parse = FALSE,那麼該圖將顯示正確的小數位數,但其格式(非常明顯)與預期值相差甚遠。

除了難以介紹文字之外,還有什麼其他選擇可以實現呢?

+0

這似乎是由'plotmath'規則引起的:'圖(1,1,主要=解析(文= sprintf的(「Y ==%0.3f %% * %% Z 2% 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) 

在這裏,我改變%0.3f'%0.3f'生成字符串

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

由於這,數量也不再解釋爲數值算值。而1.800代表數字1.8,'1.800'代表字符串1.800

enter image description here