ticks - r plotly axis labels




checkboxGroupInput-legt die minimale und maximale Anzahl der Auswahlen fest-Ticks (2)

Sie können so etwas tun:

rm(list = ls())
library(shiny)

my_min <- 1
my_max <- 3

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      checkboxGroupInput("SelecetedVars", "MyList:",paste0("a",1:5), selected = "a1")
    ),
    mainPanel(textOutput("Selected"))
  )
)

server <- function(input, output,session) {
  output$Selected <- renderText({
    paste(input$SelecetedVars,collapse=",")
  })

  observe({
    if(length(input$SelecetedVars) > my_max)
    {
      updateCheckboxGroupInput(session, "SelecetedVars", selected= tail(input$SelecetedVars,my_max))
    }
    if(length(input$SelecetedVars) < my_min)
    {
      updateCheckboxGroupInput(session, "SelecetedVars", selected= "a1")
    }
  })
}


shinyApp(ui = ui, server = server)

Hier ist ein Beispielcode mit Checkbox-Gruppeneingabe:

library(shiny)

server <- function(input, output) {
  output$Selected <- renderText({
    paste(input$SelecetedVars,collapse=",")
  })
}

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      checkboxGroupInput("SelecetedVars", "MyList:",
                         paste0("a",1:5), selected = "a1")
    ),
    mainPanel(textOutput("Selected"))
  )
)

shinyApp(ui = ui, server = server)

Wie Sie oben sehen können, können wir beliebig viele auswählen, in diesem Fall 4 von 5.

Wie kann ich die minimale und maximale Anzahl von Ticks einstellen? Ich brauche mindestens 1 Option überprüft und maximal 3 Optionen überprüft. Dh : Verhindere, dass das letzte Häkchen entfernt wird, und verhindere das Häkchen, wenn 3 Optionen bereits angekreuzt wurden .


Hallo, Sie können ein wenig JavaScript verwenden, um es zu tun:

## In a file named 'js4checkbox.js' in your app folder :
$(document).ready(function(){
  $('input[name=SelecetedVars]').on('click', function(event){
    if($('input[name=SelecetedVars]:checked').length > 3){
      $(this).prop('checked', false);
    }
  });
  $('input[name=SelecetedVars]').on('click', function(event){
    if($('input[name=SelecetedVars]:checked').length == 0){
      $(this).prop('checked', true);
    }
  });
});

Und in deiner ui füge hinzu:

fluidPage(
  includeScript(path = "js4checkbox.js"),
  ...
)

Ich weiß nicht warum, aber es funktioniert nicht gut im RStudio Viewer, also öffne es in deinem Browser.

Für den JS-Code siehe diesen Beitrag