ioslides 中闪亮的应用程序大小

Shiny app size in ioslides

我在这里使用 ScatterD3 制作了一个基本的闪亮应用程序,但是当我尝试将它嵌入到 ioslides 演示文稿中时,它被截断并出现滚动条。幻灯片可以很容易地容纳整个应用程序(我已经测量过大小),但 ioslidesshiny 选择将其分段。我需要情节显示这个大小,因为在我的真实项目中,我在图例中有一个很长的列表,需要 720 像素左右的高度。 这是代码:

编辑 使用 Joris 的建议并删除不必要的 wellPanel,我将高度重置为 550,这在滑动。我仍然得到这个滚动条,感觉必须有一种方法来调整呈现的高度。本质上,我想使用整张幻灯片并用这个应用程序填充它。

```{r, echo=FALSE}
library(scatterD3)

ui <- fluidPage(
           scatterD3Output("distPlot", height = "550px")
           )

server <- function(input, output) {
  output$distPlot <- renderScatterD3({
    mtcars$names <- rownames(mtcars)
    scatterD3(data = mtcars, x = wt, y = mpg, lab = names,
              col_var = cyl, symbol_var = am,
              xlab = "Weight", ylab = "Mpg", col_lab = "Cylinders",
              symbol_lab = "Manual transmission")
  })
}
shinyApp(ui = ui, server = server)
```

我尝试将 options = list(height = 1080) 添加到 shinyApp 调用中。我还查看了 ,设置 <div style="margin-left:-65px; margin-top:-70px; width:112%; height:130%;"> 启用了我想要的大部分功能,但它仍然拒绝调整对我来说最重要的高度参数。我尝试添加自定义 CSS 以使溢出可见,但这些解决方案中的 none 似乎有效。

您应该正确设置您的页面,以便控件实际位于绘图旁边,并使用函数 scatterD3Outputwidthheight 参数。

请记住,尽管幻灯片看起来足够大,但您仍需要为标题保留一些 space。因此,对于 720 像素的高度,绘图实际上不适合幻灯片。

编辑:Ioslides 还允许您使用自定义 css 文件。 iframe 是构建幻灯片内容的实际框架。操纵那个会给你更多 space。接下来,您可以调整幻灯片本身的大小以及水平和垂直位置。

将以下内容放入名为 temp.css 的文件中,该文件与 Rmd 文件位于同一目录中:

slides > slide {
  width: 1000px;
  height: 800px;
  padding: 10px 20px;
  left: 46%;
  top: 45%;
}

iframe {
  height: 900px;
}

并将 css: temp.css 添加到您的 .Rmd 文件中,如下所示:

---
runtime: shiny
output: 
  ioslides_presentation:
    css: temp.css
---

##


```{r, echo=FALSE}
library(scatterD3)

ui <- fluidPage(
  fluidRow(
    column(4,
           wellPanel(
             selectInput("Living", "Choose Life", 
                         choices = c("Life", "Death"))
           )
    ),
    column(8,
           scatterD3Output("distPlot", height = "550px"))
  )
)

server <- function(input, output) {
  output$distPlot <- renderScatterD3({
    mtcars$names <- rownames(mtcars)
    scatterD3(data = mtcars, x = wt, y = mpg, lab = names,
              col_var = cyl, symbol_var = am,
              xlab = "Weight", ylab = "Mpg", col_lab = "Cylinders",
              symbol_lab = "Manual transmission")
  })
}
shinyApp(ui = ui, server = server)
```

给出:

您可以尝试这些以获得更好的合身性。

旁注:在许多情况下,完全没有必要创建整个应用程序。如果您只想使用一个简单的绘图进行更新,您可以将 UI 和服务器端分别放在自己的 R 块中,并使用 outputArgs 来操作所有输出函数。这不适用于 scatterD3 包,但无论如何知道它是一件好事。

---
runtime: shiny
output: ioslides_presentation
---

## John

```{r, echo=FALSE}
library(scatterD3)
```

```{r, echo = FALSE}
             selectInput("Living", "Choose Life", 
                         choices = c("Life", "Death"))
```



```{r echo = FALSE, width = "80%", height = "400px"}
renderPlot({
    mtcars$names <- rownames(mtcars)
    plot(mpg~wt, data = mtcars)
  }, outputArgs = list(width = "80%",height="400px"))

```