2017-09-05 24 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