我想添加一个摘要表以使用ggplot进行绘图。我正在使用annotation_custom添加先前创建的表。 我的问题是表格显示的小数位数不同。 例如,我正在使用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)),
但是获得了以下错误“ sprintf(“%0.2f”,table_pet)中的错误: (列表)对象不能强制输入“ double””
我一直都没看。知道我该怎么做。
提前谢谢
答案 0 :(得分:0)
grid.table由您自己决定格式,
d = data.frame(x = "pi", y = pi)
d2 = d %>% mutate_if(is.numeric, ~sprintf("%.3f",.))
grid.table(d2)