2016-06-29 10 views
3

은이 질문은 @Yihui의이 대답은 잘 rmarkdown에서 루프에서 dygraphs 플롯을 만드는 방법을 자세히 For loop over dygraph does not work in RRmarkdown의 적용 루프에서 생성 된 견본 사이에 간격을 어떻게 추가합니까?

관련이있다. 그러나 눈에 띄게 알 수 있듯이 플롯 간에는 간격이 없습니다. 이것들이 많을 때 읽는 것은 아주 어려워집니다.

```{r} 
library(dygraphs) 
lungDeaths <- cbind(mdeaths, fdeaths) 

res <- lapply(1:2, function(i) dygraph(lungDeaths[, i])) 
htmltools::tagList(res) 
``` 

맞춤 적용 기능 자체 내에서 여기에서 생성 된 각 플롯간에 간격, 텍스트, 가로 규칙 등을 추가하는 방법이 있습니까?

현재 내 해결 방법은 dyOptions titleHeight 인수와 함께 제목 위에 패딩을 설정하는 외부 CSS를 가리키는 dyCSS 인수를 전달하는 것입니다. 예를 들어 titleHeight 인수를 50px로 설정 한 다음 제목 자체를 25px로 설정하고 상단 패딩 높이를 25px로 설정할 수 있습니다.

--- 
title: "test" 
author: "test" 
date: "test" 
output: html_document 
--- 

```{r setup, include=FALSE} 
knitr::opts_chunk$set(echo = FALSE) 
``` 

```{r} 
library(dygraphs) 
lungDeaths <- cbind(mdeaths, fdeaths) 

res <- lapply(1:2, function(i) { 
    dygraph(lungDeaths[, i], main = "Lung Deaths") %>% 
     dyOptions(titleHeight = 50) %>% 
     dyCSS("dygraph.css") 
    }) 
htmltools::tagList(res) 
``` 

그리고 dygraphs.css 파일 :

.dygraph-title { 
     font-size: 25px; 
     padding-top: 25px; 
} 

그리고 플롯 제목을 원하지만, 여전히 플롯 사이의 분리를 원하지 않는 경우, 내가 그렇게 같은 제목으로 LINEBREAK 전달 :

```{r} 
library(dygraphs) 
lungDeaths <- cbind(mdeaths, fdeaths) 

res <- lapply(1:2, function(i) { 
    dygraph(lungDeaths[, i], main = "<br>") %>% 
     dyOptions(titleHeight = 50) %>% 
     dyCSS("dygraph.css") 
    }) 
htmltools::tagList(res) 
``` 

공백을 추가하는 방법이 있지만 가능한 경우 외부 CSS를 사용하지 않는 것이 좋습니다. 말할 것도없이, 플롯 사이에 다른 객체 (예 : 텍스트 또는 수평선 규칙)를 추가 할 수 없습니다. 함수 호출의 각 반복 사이에 이러한 객체를 수동으로 추가하는 방법이 있습니까?

편집 : 그래서 아래의 답변에 따라, 우리는 또한과 같이 각 반복 사이의 휴식 시간에 추가 할 수 있습니다 : 이것은 꽤 좋은 것 같습니다

```{r} 
library(dygraphs) 
lungDeaths <- cbind(mdeaths, fdeaths) 

res <- lapply(1:2, function(i) { 
    dygraph(lungDeaths[, i]) 

    }) 

invisible(lapply(1:2, function(i) { 
    if (!exists("l")) { 
     l <<- list() 
     } 

     l[[i]] <<- htmltools::tags$br() 
    })) 

out <- c(rbind(l, res)) 

htmltools::tagList(out) 

``` 

, 내가 다른 생각을 듣고 싶네 있지만.

답변

2

내가 tagLists와 크게 익숙하지 해요,하지만 당신이 예를 들어, dygraph의 목록 등 귀하의 추가 규칙, 간격, 텍스트를 포함하는 마크 업/태그를 인터리브 수 있음을 보일 수있을 것입니다 :

space <- list(htmltools::tags$h1("Title"), 
       htmltools::tags$h2("Header text")) 
out <- c(rbind(space, res)) 
htmltools::tagList(out) 

다음 목록의 각 태그 집합이 순서대로 렌더링됩니다.

+0

데이터가 어떻게 구성되어 있는지에 따라 다른 적용 또는 유사한 호출을 통해 '공간'목록을 생성 할 수 있습니다. –