Я создал приложение 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)