3 Stimmen

Ist es möglich, sowohl ein absolutes Panel als auch einen SliderInput im gleichen ui.R (shiny) zu verwenden?

Dies ist mein ui.R. Dies ist ein Beispiel aus dem Shiny-Tutorial. Ich habe es gerade bearbeitet.

library(shiny)
library(markdown)
# Definieren der UI für die Anwendung, die ein Histogramm zeichnet
shinyUI(fluidPage(

  # Anwendungstitel
  titlePanel("Hallo Shiny!"),

  # Seitenleiste mit einer Schieberegler-Eingabe für die Anzahl der Bins
  sidebarLayout(
    sidebarPanel(
      sliderInput("bins",
                  "Anzahl der Bins:",
                  min = 1,
                  max = 50,
                  value = 30)
    ),

    # Zeigen eines Plots der generierten Verteilung
    mainPanel(
      plotOutput("distPlot"),
absolutePanel(
  bottom = 0, left=420,  width = 800,
    draggable = TRUE,
    wellPanel(
em("Dieses Panel kann verschoben werden")      

      )
)    

  ))
))

und mein server.R

library(shiny)
# Definieren der Server-Logik, die erforderlich ist, um ein Histogramm zu zeichnen
shinyServer(function(input, output) {
  # Ausdruck, der ein Histogramm generiert. Der Ausdruck ist
  # in einen Aufruf von renderPlot eingebettet, um anzuzeigen, dass:
  #
  #  1) Es "reaktiv" ist und daher automatisch
  #     neu ausgeführt wird, wenn sich Eingaben ändern
  #  2) Sein Ausgabetyp ist ein Plot
  output$distPlot <- renderPlot({
    x    <- faithful[, 2]  # Daten des Old Faithful Geysir
    bins <- seq(min(x), max(x), length.out = input$bins + 1)
    # zeichnen des Histogramms mit der angegebenen Anzahl von Bins
    hist(x, breaks = bins, col = 'darkgray', border = 'white')
  })
})**

In diesem Fall funktioniert sliderInput nicht. Wenn ich absolutePanel entferne, funktioniert sliderInput. Was könnte das Problem sein?
Vielen Dank

2voto

jdharrison Punkte 29663

Das absolutePanel verwendet die jqueryui JavaScript-Bibliothek. Es hat seinen eigenen Schieberegler. Dies führt zu einem Konflikt mit sliderInput, der die jslider-Bibliothek verwendet. Sie können dies wie folgt sehen:

library(shiny)
runApp(
  list(ui = fluidPage(
    titlePanel("Hello Shiny!"),
    sidebarLayout(
      sidebarPanel(
        sliderInput("bins",
                    "Anzahl der Bins:",
                    min = 1,
                    max = 50,
                    value = 30)
      ),
      mainPanel(
        plotOutput("distPlot")
        , tags$head(tags$script(src = "shared/jqueryui/1.10.3/jquery-ui.min.js"))

      )
    )
  ),
  server = function(input, output) {
    output$distPlot <- renderPlot({
      x    <- faithful[, 2]  # Daten des Old Faithful Geysir
      bins <- seq(min(x), max(x), length.out = input$bins + 1)
      hist(x, breaks = bins, col = 'darkgray', border = 'white')
    })
  }
  )
)

BEARBEITEN: In der neuesten Entwicklerversion von shiny wurde dies behoben. Das Schieberegler-Komponente wurde aus dem jqueryui entfernt. https://github.com/rstudio/shiny/commit/7e12a281f51e047336ba2c501fcac43af5253225

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X