Подзаголовки или подзаголовки с трикотажем занимают более одной страницы?
Очень похоже на этот пост. Однако у меня больше графиков, чем помещается на одной странице, поэтому оставшиеся графики будут обрезаны после нажатия Knit. Кто-нибудь знает, как решить эту проблему, построив другие графики на следующей странице?
title: 'title'
author: "--"
date: "`r Sys.Date()`"
output: pdf_document
header-includes:
- \usepackage{subfig}
- \usepackage{float}
## To make the example more reproducible ##
```{r echo=FALSE, message=FALSE}
knitr::opts_chunk$set(fig.width=6, fig.height=9, fig.show="hold",
hightligh=TRUE, warnings=TRUE, error=FALSE, cache=FALSE, echo=FALSE,
dpi=100)
library(ggplot2)
```
```{r test, fig.cap='A collection of figs', fig.subcap= "-", out.width="49%", fig.asp=1, fig.ncol = 2, fig.show =
"asis", fig.align="center"}
for (ii in 1:10) {
qplot(1:3, 1:3, main=ii)
}
```
## this part is only to resemble the answer by *Michael Harper* in the post mentioned before and should be uncommented to replicate (google maps API needed) ##
# ```{r}
# locations <- c("Southampton, UK", "London, UK", "Bristol, UK",
# "Birmingham, UK", "Liverpool, UK", "Southampton, UK", "London, UK",
# "Bristol, UK", "Birmingham, UK", "Liverpool, UK")
# ggmap::register_google(key = "....")
# ```
# ```{r fig-sub-2, fig.cap='A collection of maps', fig.subcap= locations,
# out.width='.49\\linewidth', fig.asp=1, fig.ncol = 2}
# library(ggmap)
# lapply(locations, function(x)
# ggmap(get_map(x))
# )
# ```
Ответ Майкла Харпера в том же посте меня дал довольно далеко, но не до такой степени, что количество сюжетов превышает количество сюжетов, помещающихся на одной странице.
вывод из приведенного выше кода, показывающий только 6 из 10 графиков
1 ответ
Для полноты картины я покажу, как решить проблему с помощью решения от @MichaelHarper, размещенного здесь.
---
title: "tmp"
author: "Kevin Ouwerkerk"
date: "4-5-2020"
output: pdf_document
header-includes:
- \usepackage{subfig}
- \usepackage{float}
---
```{r echo=FALSE, message=FALSE}
library(ggplot2)
knitr::opts_chunk$set(warnings=TRUE, error=FALSE, cache=FALSE, echo=FALSE,
dpi=100)
plots <- list()
```
```{r test}
for (ii in 1:10) {
plots[[ii]] <- qplot(1:3, 1:3, main=ii)
}
```
```{r split-function}
knitr::opts_chunk$set(echo = FALSE)
library(knitr)
# Function to create a separate chunk to generate a plot for each item in list
splitSubFig <- function(plots, caption, maxlength) {
knitr::opts_knit$set(progress = FALSE, verbose = FALSE)
n <- length(plots)
numPages <- ceiling(n / maxlength)
splitPlots <- split(plots, rep(1:ceiling(n/maxlength), each=maxlength)[1:n])
for (page in 1:numPages) {
cat(
knit(text=knit_expand(
text=(
"```{r {{caption}}{{page}}, fig.cap='{{caption}}: {{page}}',
fig.subcap=LETTERS[1:length(splitPlots[page])], out.width='8cm', fig.ncol=2, echo =
FALSE, message = FALSE}
for(i in splitPlots[page]){
for(plots in i){
print(plots)
}
}
```"),
caption = caption,
page = LETTERS[page])))
}
}
```
```{r, results="asis"}
splitSubFig(plots, caption = "Your Caption", maxlength = 6)
```
Если у вас очень длинный заголовок и вы получаете сообщение об ошибке Error in dirname(name) : path too long
вы можете удалить {{caption}}
в имени блока кода сразу после text
аргумент в cat
функция