2

我在这里使用 ScatterD3 制作了一个基本的闪亮应用程序,但是当我尝试将它嵌入到ioslides演示文稿中时,它会被切断并出现一个滚动条。幻灯片可以轻松容纳整个应用程序(我已经测量了大小),但ioslides或者shiny正在选择对其进行分段。我需要绘图显示这个大小,因为在我的真实项目中,我在图例中有一个很长的列表,需要大约 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 调用。我也看了这篇文章,设置 a<div style="margin-left:-65px; margin-top:-70px; width:112%; height:130%;">启用了我想要的大部分功能,但它仍然拒绝调整对我来说最重要的高度参数。我尝试添加自定义 CSS 以使溢出可见,但这些解决方案似乎都不起作用。

4

1 回答 1

3

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

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

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

将以下内容放在一个名为 eg 的文件中,该文件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"))

```
于 2017-04-06T14:57:56.013 回答