Как создать PDF-файл rmarkdown со смешанным выводом ggplot2 и таблицей из списка фреймов данных - PullRequest
0 голосов
/ 27 марта 2020

Я сгенерировал приложение shinydashboard, которое позволяет легко визуализировать данные в списке фреймов данных на разных вкладках (например, с возможностью сбора данных с помощью ggplot на одной вкладке, таблицы сводных данных на другой). Это прекрасно работает, но теперь я хочу предоставить опцию «создать отчет в формате PDF», чтобы данные можно было сохранить для последующего просмотра в будущем.

Я хочу вывести файл PDF, содержащий комбинацию таблиц данных и графики ggplot2 в выходных данных, аналогичные приведенным ниже:

enter image description here

Я бы хотел, чтобы в моем списке данных была одна страница с полем заголовка, в котором указано имя кадра данных. Вероятно, для этого потребуется ручное манипулирование графиками и таблицами, но я не смог выяснить, как включить этот уровень форматирования в for l oop (как я это делал). Это может не подходить для решения проблемы.

Вот воспроизводимый пример чего-то, что работает, но форматирование не так, как я хочу.

---
title: "Multiple Plot pdf Report"
date: "`r format(Sys.Date(), '%B %d, %Y')`"
output: 
  pdf_document:
    keep_tex: FALSE
---

```{r, include=FALSE}
library(kableExtra)
library(ggplot2)
library(gridExtra)
```

```{r echo=FALSE, results='asis', fig.height=3, fig.width=3}
alldat1 <- mtcars[1:10, 1:5]
alldat2 <- mtcars[11:20, 1:5]
alldat.list <- list(alldat1, alldat2)
names(alldat.list) <- c("One", "Two")

for(i in 1:length(alldat.list)){

  print(kable(alldat.list[[i]]))

  print(
    ggplot(alldat.list[[i]], aes(x = mpg, y = cyl)) +
          geom_point(shape = 1) +    
          geom_smooth(method = lm) +   
          ggtitle(paste("Mpg vs Cyl: ", names(alldat.list[i])))
  )
  print(
    ggplot(alldat.list[[i]], aes(x = disp, y = hp)) +
              geom_point(shape = 1) +    
              geom_smooth(method = lm) +   
              ggtitle(paste("Disp vs HP: ", names(alldat.list[i])))
  )

 cat("\n\n\\pagebreak\n")
}

```

Помощь очень ценится!

1 Ответ

0 голосов
/ 02 апреля 2020

Узнайте, как использовать функцию tabset для разделения отчетов на разных страницах.

---

title: "Test"

output: html_document

---

## Попробуйте {.tabset}

### Tryto
`` `{r}
" page1 "
` ``

### Работа
`` `{r}
" page2 "
` ``

...