2016-09-24 2 views
2

Примеры на http://rmarkdown.rstudio.com/authoring_shiny.html показывают, что renderPlot сам отображает график на уценку. Как мы можем получить нашу уценку, чтобы разрешить взаимодействия, такие как щелчки, кисти и т. Д., Которые объявлены как часть последующего этапа plotOutput?Интерактивный ggplot в Markdown

Примеры взаимодействия с plotOutput в shiny здесь - 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

Проблема заключается в том, что вы используете параметр height в plotOutput с процентами. Мы можем найти в документации ?shiny::plotOutput:

Обратите внимание, что, по высоте, с использованием «авто» или «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) 
}) 
``` 
Смежные вопросы