如何在交互式RMarkdown中控制绘图高度/大小(有光泽)

wns*_*mth 6 r knitr r-markdown shiny

我在一起使用闪亮与RMarkdown产生一个交互式文档,描述在这里.

使用以下代码,我设法绘制了一个交互式地图

```{r, echo=FALSE, warning=FALSE, message=FALSE}

g2g14 <- readOGR("input//geodata", "g2g14") # no projection needs to be specified
old_geodata <- g2g14@data

inputPanel(
  selectInput("map.party", label = "Partei", choices = unique(long_data$Partei), selected = "FDP"),
  selectInput("map.year", label = "Wahljahr", choices = unique(format.Date(long_data$Jahr, "%Y")), selected = "1971")
)

renderPlot({
  partydata <- long_data %>%
    filter(Partei == input$map.party & Jahr == as.Date(input$map.year, "%Y"))
  g2g14@data <- old_geodata
  g2g14@data <- merge(g2g14@data, partydata, by.x =  "GMDNR",by.y ="BFSNr")

  cols <- brewer.pal(5, "Purples")
  brks <- seq(0,100,20)
  colsForMap <- cols[findInterval(g2g14@data$Staerke, vec = brks[1:5])]

  plot(g2g14, col = colsForMap, border = "white")
  legend("topleft", legend = levels(cut(g2g14@data$Staerke, brks)), fill = cols, border = "white", title = "Parteistärke in %")

})
Run Code Online (Sandbox Code Playgroud)

问题:从控制台运行代码时,地图很好地缩放,但在交互式文档中,绘图太小:

在此输入图像描述

这可能是由于绘图区域的高度有限造成的.我已经尝试fig.height = 20在块选项中设置一个非常大的但没有结果.该怎么办?

mle*_*gge 5

您可以执行一个额外的步骤-添加一个renderUI

```{r, echo=FALSE, warning=FALSE, message=FALSE}

g2g14 <- readOGR("input//geodata", "g2g14") # no projection needs to be specified
old_geodata <- g2g14@data

inputPanel(
  selectInput("map.party", label = "Partei", choices = unique(long_data$Partei), selected = "FDP"),
  selectInput("map.year", label = "Wahljahr", choices = unique(format.Date(long_data$Jahr, "%Y")), selected = "1971")
)

output$unsized <- renderPlot({
  partydata <- long_data %>%
    filter(Partei == input$map.party & Jahr == as.Date(input$map.year, "%Y"))
  g2g14@data <- old_geodata
  g2g14@data <- merge(g2g14@data, partydata, by.x =  "GMDNR",by.y ="BFSNr")

  cols <- brewer.pal(5, "Purples")
  brks <- seq(0,100,20)
  colsForMap <- cols[findInterval(g2g14@data$Staerke, vec = brks[1:5])]

  plot(g2g14, col = colsForMap, border = "white")
  legend("topleft", legend = levels(cut(g2g14@data$Staerke, brks)), fill = cols, border = "white", title = "Parteistärke in %")

})

renderUI({
  plotOutput("unsized", height = 500, width = 500)
})
```
Run Code Online (Sandbox Code Playgroud)

使用启动新的RMD光泽文档时创建的示例文档进行了测试:

```{r, echo=FALSE}
inputPanel(
  selectInput("n_breaks", label = "Number of bins:",
              choices = c(10, 20, 35, 50), selected = 20),

  sliderInput("bw_adjust", label = "Bandwidth adjustment:",
              min = 0.2, max = 2, value = 1, step = 0.2)
)

output$unsized <- renderPlot({
  hist(faithful$eruptions, probability = TRUE, breaks = as.numeric(input$n_breaks),
       xlab = "Duration (minutes)", main = "Geyser eruption duration")

  dens <- density(faithful$eruptions, adjust = input$bw_adjust)
  lines(dens, col = "blue")
})

renderUI({
  plotOutput("unsized", height = 250, width = 250)
})

``` 
Run Code Online (Sandbox Code Playgroud)


Box*_*uan 4

您只需在 中添加widthheight选项即可renderPlot。类型?renderPlot以获取更多信息。

\n\n

就你而言,

\n\n
renderPlot({\n  partydata <- long_data %>%\n    filter(Partei == input$map.party & Jahr == as.Date(input$map.year, "%Y"))\n  g2g14@data <- old_geodata\n  g2g14@data <- merge(g2g14@data, partydata, by.x =  "GMDNR",by.y ="BFSNr")\n\n  cols <- brewer.pal(5, "Purples")\n  brks <- seq(0,100,20)\n  colsForMap <- cols[findInterval(g2g14@data$Staerke, vec = brks[1:5])]\n\n  plot(g2g14, col = colsForMap, border = "white")\n  legend("topleft", legend = levels(cut(g2g14@data$Staerke, brks)), fill = cols, border = "white", title = "Parteist\xc3\xa4rke in %")\n}, width = 1200, height = 900)  ## <--- add outside the curly braces\n
Run Code Online (Sandbox Code Playgroud)\n