Используйте пользовательский визуал в Shiny с адаптивными ограничениями - PullRequest
0 голосов
/ 27 июня 2018

Скажем, я хотел использовать пользовательское изображение или шейп-файл в интерактивной среде (например, R Shiny), например, это изображение бумажного самолета:

paper airplane

Я также хотел бы нарисовать изображение самостоятельно в программе, чтобы обеспечить полный контроль.

Но общая цель состоит в том, чтобы позволить пользователю перетаскивать края изображения, и программа могла отслеживать размер изменений для каждого измерения (скажем, размах крыльев бумажного самолетика)

Будет ли у Shiny такая возможность или мне нужно использовать другую программу? Я также хотел бы получить некоторую статистику изменений, доступных пользователю.

Есть ли у кого-нибудь подобные примеры подобных вещей, или может указать мне правильное направление?

1 Ответ

0 голосов
/ 28 июня 2018

Как я написал в комментарии, вы можете использовать пакет поступление и прочитать информацию о сеансе пользователя.

Воспроизводимый пример можно найти ниже:

library(shiny)
library(shinyjqui)
library(ggplot2)
server <- function(input, output, session){
  global <- reactiveValues(width = 400, height = 400)

  observe({
    print(session)
    if(!is.null(session$clientData[["output_plot1_height"]])){
      global$height <- session$clientData[["output_plot1_height"]]
      global$width <- session$clientData[["output_plot1_width"]]
    }
  })

  output$plot1 <- renderImage({
    outfile <- tempfile(fileext='.png')
    png(outfile, width = global$width, height = global$height)
    hist(rnorm(200))
    dev.off()
    list(src = outfile)
  }, deleteFile = TRUE)

  output$clientdataText <- renderText({
    paste("height is ", global$height, "width is", global$width)
  })


  }

ui <- fluidPage(
    verbatimTextOutput("clientdataText"),
    jqui_resizabled(plotOutput("plot1"))
)


shinyApp(ui, server)
...