【问题标题】:Shiny app size in ioslidesioslides 中闪亮的应用程序大小
【发布时间】:2017-04-06 14:12:14
【问题描述】:

我在这里使用 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 调用。我还查看了this post,设置&lt;div style="margin-left:-65px; margin-top:-70px; width:112%; height:130%;"&gt; 启用了我想要的大部分功能,但它仍然拒绝调整对我来说最重要的高度参数。我尝试添加自定义 CSS 以使溢出可见,但这些解决方案似乎都不起作用。

【问题讨论】:

    标签: html css r shiny ioslides


    【解决方案1】:

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

    请记住,虽然幻灯片可能看起来足够大,但您仍需要为标题保留一些空间。因此,对于 720 像素的高度,该图实际上不适合幻灯片。

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

    将以下内容放在与您的 Rmd 文件相同的目录中名为 temp.css 的文件中:

    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"))
    
    ```
    

    【讨论】:

    • 感谢 Joris 的快速回复 - 我从您的回答(非常简洁和有帮助,但不是我想的那样)中意识到我可能一直在表达我的问题以一种不清楚的方式。我已经使用您的答案对帖子进行了一些调整,但我仍然收到嵌入式应用程序一侧的滚动条。
    • @Scott 事情是,输入不是罪魁祸首。它是在顶部为限制高度的情节标题保留的空间。我会检查是否找到删除它的方法,但很有可能您必须求助于自定义 css 文件。
    猜你喜欢
    • 2016-07-17
    • 1970-01-01
    • 2013-07-08
    • 2018-10-25
    • 2015-02-25
    • 1970-01-01
    • 2016-06-02
    • 2016-02-03
    • 1970-01-01
    相关资源
    最近更新 更多