Отображение нескольких графиков на сетке в R-Markdown - PullRequest
0 голосов
/ 24 июня 2018

После разговора здесь , есть ли способ организовать выходные графы в сетке?Чтобы иметь один или несколько графиков в строке.

Приведенный ниже код будет генерировать 4 графика, расположенные вертикально.Есть ли способ организовать их в сетке 4x4?

Я пытался использовать tags$div, но он объединяет все графики в один div.Есть ли способ применить свойство CSS, например display: inline-block;, к каждому виджету dygraph?или любой другой лучший способ?

```{r}
library(dygraphs)
library(htmltools)


makeGraphs = function(i){
  dygraph(lungDeaths[, i], width = 300, height = 300, group = "lung-deaths")%>%
    dyOptions(strokeWidth = 3) %>%
    dyRangeSelector(height = 20)
}


lungDeaths <- cbind(mdeaths, fdeaths, ldeaths, mdeaths)
res <- lapply(1:4, makeGraphs )
htmltools::tagList(tags$div(res, style = "width: 620px; padding: 1em; border: solid; background-color:#e9e9e9"))
```

Скриншот текущего выхода:

enter image description here

1 Ответ

0 голосов
/ 24 июня 2018

Думаю, я понял это, не уверен, что это лучшее решение, но добавление div-обертки со свойством display:inline-block;, похоже, работает очень хорошо.

Я только что добавил эту строку в функцию, которая генерируеткаждый рисунок:

htmltools::tags$div(theGraph, style = "padding:10px; width: 250px; border: solid; background-color:#e9e9e9; display:inline-block;")

, поэтому обновленный код выглядит следующим образом:

```{r graphs}
library(dygraphs)
library(htmltools)


makeGraphs = function(i){
  theGraph <- dygraph(lungDeaths[, i], width = 400, height = 300, group = "lung-deaths")%>%
    dyOptions(strokeWidth = 3) %>%
    dyRangeSelector(height = 20)

  htmltools::tags$div(theGraph, style = "padding:10px; width: 450px; border: solid; background-color:#e9e9e9; display:inline-block;")

}



lungDeaths <- cbind(mdeaths, fdeaths, ldeaths, mdeaths)
res <- lapply(1:4, makeGraphs )
htmltools::tagList(res) 

```

Снимок экрана вывода: enter image description here

...