Связанные участки без использования Shiny - PullRequest
0 голосов
/ 14 мая 2018

Я создал приложение shiny, чтобы показать тепловую карту корреляции для большого набора данных.При нажатии плиток тепловой карты отображаются соответствующие диаграммы рассеяния.

Однако мне нужно создать несколько таких приложений, и это превышает мой лимит публикации на shinyapps.io.Моя компания не желает переходить на платный план.Я пытался использовать альтернативные методы для публикации приложения, такие как RInno, но безрезультатно (я думаю, что приложение слишком сложное?).

Если бы кто-нибудь мог сказать мне, как я мог бы произвести то же самое с plotly одним, а НЕ с shiny, я был бы всегда благодарен.Я полагаю, что что-то вроде crosstalk может быть путем, чтобы связать плитки тепловых карт с точечными диаграммами?

Спасибо

Пример из здесь .

library(plotly)
library(shiny)

# compute a correlation matrix
correlation <- round(cor(mtcars), 3)
nms <- names(mtcars)

ui <- fluidPage(
  mainPanel(
    plotlyOutput("heat"),
    plotlyOutput("scatterplot")
  ),
  verbatimTextOutput("selection")
)

server <- function(input, output, session) {
  output$heat <- renderPlotly({
    plot_ly(x = nms, y = nms, z = correlation, 
            key = correlation, type = "heatmap", source = "heatplot") %>%
      layout(xaxis = list(title = ""), 
             yaxis = list(title = ""))
  })

  output$selection <- renderPrint({
    s <- event_data("plotly_click")
    if (length(s) == 0) {
      "Click on a cell in the heatmap to display a scatterplot"
    } else {
      cat("You selected: \n\n")
      as.list(s)
    }
  })

  output$scatterplot <- renderPlotly({
    s <- event_data("plotly_click", source = "heatplot")
    if (length(s)) {
      vars <- c(s[["x"]], s[["y"]])
      d <- setNames(mtcars[vars], c("x", "y"))
      yhat <- fitted(lm(y ~ x, data = d))
      plot_ly(d, x = ~x) %>%
        add_markers(y = ~y) %>%
        add_lines(y = ~yhat) %>%
        layout(xaxis = list(title = s[["x"]]), 
               yaxis = list(title = s[["y"]]), 
               showlegend = FALSE)
    } else {
      plotly_empty()
    }
  })

}

shinyApp(ui, server)

enter image description here

1 Ответ

0 голосов
/ 31 декабря 2018

Лучшим ответом, вероятно, будет использование crosstalk в сочетании с flexdashboard https://rmarkdown.rstudio.com/flexdashboard/.

Живой пример использования обоих можно найти здесь: http://rstudio -pubs-static.s3.amazonaws.com/209203_02f14fea3274448bbbf8d04c99c6051b.html.

Конечный результат - просто HTML-страница, которой легко поделиться и использовать.Исходя из вашего примера, вам не нужно блестеть, и вы должны иметь возможность использовать перекрестные помехи для этого случая использования.В противном случае вам нужно выйти за пределы R, чтобы получить эту функциональность.Желаем удачи!

...