在ggplot的注释中显示固定的小数

时间:2017-09-05 13:31:48

标签: r ggplot2 printf string-formatting annotate

我需要在ggplot的注释中包含所有浮点数,以在小数点分隔符后面显示3位数。但是我遇到了这个问题:

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,那么情节会带有正确的小数位数,但其格式(显然)远远超出预期的小数。

除了难以介绍文本外,还有哪些其他方法可以实现这一目标?

1 个答案:

答案 0 :(得分: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