R 中 annotation_customs(tableGrob) 中显示的小数位数

Number of displayed decimals in annotation_customs(tableGrob) in R

我想添加一个摘要 table 以使用 ggplot 绘图。我正在使用 annotation_custom 添加以前创建的 table。 我的问题是 table 显示不同的小数位数。 例如,我正在使用 mtcars 数据库,我的代码行如下:

rm(list=ls()) #Clear environment console
data(mtcars)
head(mtcars)

library(dplyr)
library(tidyr)
library(ggplot2)
library(gridExtra)

table <- mtcars %>% #summary table that needs to be avelayed to the plot
  select(wt) %>%
  summarise(
    Obs = length(mtcars$wt),
    Q05 = quantile(mtcars$wt, prob = 0.05),
    Mean = mean(mtcars$wt),
    Med = median(mtcars$wt),
    Q95 = quantile(mtcars$wt, prob = 0.95),
    SD = sd(mtcars$wt)) 

dens <- ggplot(mtcars) + #Create example density plot for wt variable
  geom_density(data = mtcars, aes(mtcars$wt))+
  labs(title = "Density plot")
plot(dens)

dens1 <- dens + #Overlaping summary table to density plot
  annotation_custom(tableGrob(t(table), 
                              cols = c("WT"),
                              rows=c("Obs", "Q-05", "Mean", "Median", "Q-95", "S.D." ),
                              theme = ttheme_default(base_size = 11)),
                    xmin=4.5, xmax=5, ymin=0.2, ymax=0.5)
print(dens1)

运行上一张我得到如下图 density plot

我想将显示的小数位数固定为 2。

我已经尝试添加 sprintf

annotation_custom(tableGrob(t(sprintf("%0.2f",table)),

但得到如下错误"Error in sprintf("%0.2f", table_pet) : (列表) 对象不能被强制键入 'double'"

我一直在看,没看。知道我该怎么做。

提前致谢

grid.table 格式由您决定,

d = data.frame(x = "pi", y = pi)
d2 = d %>% mutate_if(is.numeric, ~sprintf("%.3f",.))

grid.table(d2)