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)
我想添加一个摘要 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)