Количество отображаемых десятичных знаков в annotation_customs (tableGrob) в R - PullRequest
0 голосов
/ 04 мая 2019

Я хочу добавить сводную таблицу для построения графика с помощью 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)

Запуск предыдущего я получаю следующую картину График плотности

Я бы хотел установить количество отображаемых десятичных знаков только в 2.

Я уже пытался добавить sprintf

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

Но получена следующая ошибка «Ошибка в sprintf («% 0.2f », table_pet): (список) объект не может быть приведен к типу 'double' "

Я искал без всякого взгляда. Любая идея, как я могу это сделать.

Заранее спасибо

1 Ответ

0 голосов
/ 05 мая 2019

grid.table оставляет вам форматирование,

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

grid.table(d2)
...