2016-09-24 66 views
2

http://rmarkdown.rstudio.com/authoring_shiny.html上的示例指示renderPlot本身会将该图绘制为降价。我们如何获得降价以允许互动,如点击,刷子等,这些互动被宣布为随后的plotOutput步骤的一部分?Markdown中的交互式ggplot

plotOutputshiny这里的互动示例 - 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

的问题是,您使用的参数heightplotOutput与百分比。我们可以在文档中?shiny::plotOutput发现:

需要注意的是,对于高度,使用“自动”或“100%”一般不会达到预期效果,因为高度是如何计算与HTML/CSS。

如果删除height = 100%(在本例中为冗余),将绘制该图。如果你想改变输出的高度,你可以使用像素而不是百分数。

然后,您可以通过input$Click1input$DblClick1input$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) 
}) 
```