http://rmarkdown.rstudio.com/authoring_shiny.html上的示例表明renderPlot
本身会将图表渲染到降价处。我们如何才能让我们的降价功能允许点击,画笔等交互,这些交互被声明为后续plotOutput
步骤的一部分?
此处plotOutput
中shiny
的{{1}}的互动示例 - http://shiny.rstudio.com/articles/plot-interaction.html。
代码段 -
```{r, echo = FALSE}
output[['Plot1']] = renderPlot(
ggplot(mtcars) + geom_point(aes(x = cyl, y = qsec))
)
renderPlot(
ggplot(mtcars) + geom_point(aes(x = cyl, y = wt))
)
print("renderPlot above. plotOutput below (which doesn't get rendered).")
renderUI({
plotOutput(
'Plot1',
brush = brushOpts(
id = 'Brush1'
),
dblclick = dblclickOpts(id = 'DblClick1'),
click = 'Click1',
height = "100%"
)
})
```
答案 0 :(得分:0)
问题在于您使用height
中的参数plotOutput
和百分比。我们可以在文档?shiny::plotOutput
中找到:
注意,对于身高,使用" auto"或" 100%"通常不会按预期工作,因为使用HTML / CSS计算高度。
如果删除height = 100%
(在这种情况下是多余的),则会渲染绘图。如果要更改输出的高度,可以使用像素而不是百分比。
然后,您可以通过input$Click1
,input$DblClick1
和input$Brush1
访问值,并将其传递给渲染*函数。
示例:
---
title: "Example"
author: "Unnamed_User"
date: "24 Sep 2016"
output: html_document
runtime: shiny
---
```{r, echo = FALSE}
library(ggplot2)
```
### Normal plot
```{r, echo = FALSE}
ggplot(mtcars) + geom_point(aes(x = cyl, y = wt))
```
### Interactive plot
```{r, echo = FALSE}
renderUI({
plotOutput(
'Plot1',
brush = brushOpts(
id = 'Brush1'
),
dblclick = dblclickOpts(id = 'DblClick1'),
click = 'Click1'
)
})
output[['Plot1']] <- renderPlot({
ggplot(mtcars) + geom_point(aes(x = cyl, y = qsec))
})
```
### Clicked point
```{r, echo = FALSE}
renderPrint({
cat(" x:", input$Click1$x,
"\n",
"y:", input$Click1$y)
})
```