fonts कैसे चक्रीय में चेकबॉक्स ग्रुपइनपुट रंग-कोडित बनाने के लिए




colors shiny (3)

यह थोड़ा खुला दिमाग है मैंने Google के साथ कुछ शोध किया था, लेकिन कोई भी हिट नहीं हुआ।

मेरे पास एक चमकदार परियोजना है, जिसमें मैं एक चैकबॉक्स ग्रुप इनपूट का उपयोग पक्षपेनल में करता हूं, इस तरह से:

   checkboxGroupInput("variable", "Variable:",
                     choices = names ,selected = names
    )

जहां 'नाम' एक चरित्र वेक्टर है

मैं मुख्य पैनल में एक चार्ट में किंवदंती (अलग-अलग नामों के लिए अलग-अलग रंग) शामिल करता हूं अब मैं साइड पेनेल में नामों के टेक्स्ट रंग (प्रत्येक नाम के लिए एक रंग) को बदलने की सोच रहा हूं ताकि मैं चार्ट में किंवदंती से छुटकारा पा सकूं।

क्या कोई जानता है इसे कैसे करना है? बहुत बहुत धन्यवाद।


आप इसके लिए tags$style उपयोग कर सकते हैं:

lapply(1:length(names), function(x) {
   n <- length(names)
   col <- gplots::col2hex(rainbow(n)[x])
   css_col <- paste0("#variable div.checkbox:nth-child(",x,
                     ") span{color: ", col,";}")
   tags$style(type="text/css", css_col)
}),
checkboxGroupInput("variable", "Variable:",
                   choices = names, selected = names)

@HubertL

आपका अंतिम संस्करण महान काम करता है हालांकि, मैं चीजों को और अधिक गतिशील चाहता हूं - एक विकल्प को स्थायी रूप से रंग देने के बजाय, मैं पहले एन रंग को चुने गए आइटम को निर्दिष्ट करना पसंद करता हूं। दुर्भाग्य से, मैं जो कोड कस्टमाइज़ कर रहा हूं वह जिस तरह से मैं चाहता हूं, वह काम नहीं करता।

उदाहरण के लिए, मेरे पास 6 रंग हैं, और सभी छह चर डिफ़ॉल्ट रूप से चुने गए हैं, जब मैं किसी एक (दो, तीन, चार, पांच) को रद्द कर देता हूं, तो मैं उन रंगों को ग्रहण करता हूं, जिनको डी-जाँच सही तरीके से अपडेट हो जाएगा। ('एक', 'दो', 'तीन', 'चार', 'पांच', '' '' '' '' '' ',' '' छः ') ; ('एक', 'दो', 'चार', 'पाँच') के लिए ('नीला', 'लाल', 'हरा', 'बैंगनी', 'नींबू') देखना चाहता हूं। , 'छः'), लेकिन वास्तविक रंग ('नीला', 'लाल', 'बैंगनी', 'नींबू', 'नीला') है

यहाँ मैं परीक्षण के लिए उपयोग किया गया कोड है:

my_names <- c ('एक', 'दो', 'तीन', 'चार', 'पांच', 'छः')

my_selected <- c ('एक', 'दो', 'तीन', 'चार', 'पांच', 'छः')

my_colors <-c ('नीला', 'लाल', 'हरा', 'बैंगनी', 'नींबू', 'भूरा')

shinyApp (यूआई = fluidPage (uiOutput ( "my_cbgi")),

     server = function(input, output, session) {
       my <- reactiveValues(selected=my_selected)
       observeEvent(input$variable,{my$selected <- input$variable})
       output$my_cbgi <- renderUI(my_checkboxGroupInput("variable", "Variable:",
                                                        choices = my_names, 
                                                        selected=my$selected,
                                                        colors=my_colors[1:length(my$selected)]))
     })

आप इसे चमकदार में सीधे नहीं कर सकते हैं, लेकिन आप ब्राउज़र इंस्पेक्टर /

<div id="variable" class="form-group shiny-input-checkboxgroup shiny-input-container">
  <label class="control-label" for="variable">Variable:</label>
  <div class="shiny-options-group">
    <div class="checkbox">
      <label>
        <input type="checkbox" name="variable" value="1" checked="checked"/>
        <span>one</span>
      </label>
    </div>
    <div class="checkbox">
      <label>
        <input type="checkbox" name="variable" value="2" checked="checked"/>
        <span>two</span>
      </label>
    </div>
    <div class="checkbox">
      <label>
        <input type="checkbox" name="variable" value="3"/>
        <span>three</span>
      </label>
    </div>
  </div>
</div>

फिर आप इसे renderUI का उपयोग करके विश्राम कर सकते हैं:

my_checkboxGroupInput <- function(variable, label, choices, selected, colors){
  choices_names <- choices
  if(length(names(choices))>0) my_names <- names(choices)
  div(id=variable,class="form-group shiny-input-checkboxgroup shiny-input-container shiny-bound-input",
    HTML(paste0('<label class="control-label" for="',variable,'">',label,'</label>')),
    div( class="shiny-options-group",
      HTML(paste0('<div class="checkbox" style="color:', colors,'">',
                    '<label>',
                    '<input type="checkbox" name="', variable, 
                        '" value="', choices, 
                        '"', ifelse(choices %in% selected, 'checked="checked"', ''), 
                    '/>',
                    '<span>', choices_names,'</span>',
                    '</label>',
                  '</div>', collapse = " "))
      )
    )
}

library(shiny)
my_names <- c('one'=1,'two'=2,'three'=3)
my_selected <- c(1,2)
my_colors <-c('blue','red','green')
shinyApp(
  ui=fluidPage(uiOutput("my_cbgi")),
  server = function(input, output, session) {
    output$my_cbgi <- renderUI(my_checkboxGroupInput("variable", "Variable:",
                                                     choices = my_names,
                                                     selected=my_selected, 
                                                     colors=my_colors))
    }
  )

संपादित करें

रंग में केवल चयनित आइटम प्रदर्शित करने के लिए, आपको फ़ंक्शन को थोड़ा सुधार करने और मौजूदा चयन के रूप में इनपुट $ वैरिएबल को मानचित्रित करने के लिए एक प्रतिक्रियाशील का उपयोग करने की आवश्यकता है, जैसे:

my_checkboxGroupInput <- function(variable, label,choices, selected, colors){
  my_names <- choices
  if(length(names(choices))>0) my_names <- names(choices)
  div(id=variable,class="form-group shiny-input-checkboxgroup shiny-input-container shiny-bound-input",
    HTML(paste0('<label class="control-label" for="',variable,'">',label,'</label>')),
    div( class="shiny-options-group",
      HTML(paste0('<div class="checkbox">',
                    '<label>',
                    '<input type="checkbox" name="', variable, 
                        '" value="', choices, 
                        '"', ifelse(choices %in% selected, 'checked="checked"', ''), 
                    '/>',
                    '<span ', ifelse(choices %in% selected, paste0('style="color:', colors,'"'),''), '>',my_names,'</span>',
                    '</label>',
                  '</div>', collapse = " "))
      )
    )
}

my_names <- c('one'=1,'two'=2,'three'=3)
my_selected <- c(1,2)
my_colors <-c('blue','red','green')
shinyApp(ui=fluidPage(uiOutput("my_cbgi")),
         server = function(input, output, session) {
           my <- reactiveValues(selected=my_selected)
           observeEvent(input$variable,{my$selected <- input$variable})
           output$my_cbgi <- renderUI(my_checkboxGroupInput("variable", "Variable:",
                                                            choices = my_names, 
                                                            selected=my$selected,
                                                            colors=my_colors))
         })




controls