मैं अपने चमकदार अनुप्रयोग में है कि एक साजिश उपयोगकर्ता पर क्लिक करें या फिर कुछ क्षेत्रों का चयन कर सकते करना चाहते हैं, तो मैं plotOutput
के क्लिक और ब्रश तर्कों का उपयोग कर रहा हूँ। मेरी समस्या यह है कि जब एक ब्रश शुरू किया जाता है, तो क्लिक हैंडलर भी कहा जाता है। मैं जानना चाहता हूं कि एक क्लिक कब किया जाता है, और मैं जानना चाहता हूं कि ब्रश कब बनाया जाता है, लेकिन यदि कोई ब्रश ब्रश का हिस्सा है तो मैं इसे अनदेखा करना चाहता हूं।ggplot2: ब्रश से क्लिक को अलग करने के लिए कैसे?
उदाहरण: निम्नलिखित अनुप्रयोग में, अगर आप सिर्फ ब्रश (कहीं क्लिक करें और माउस को खींच), आप एक "क्लिक" संदेश के साथ ही एक "ब्रश" संदेश मिलता है। मैं उस मामले में केवल "ब्रश" संदेश प्राप्त करना चाहता हूं।
library(shiny)
library(ggplot2)
runApp(shinyApp(
ui = fluidPage(
plotOutput("plot", click = "click", brush = "brush")
),
server = function(input, output, session) {
output$plot <- renderPlot({
ggplot(mtcars, aes(wt, mpg)) + geom_point()
})
observeEvent(input$click, {
cat("clicked\n")
})
observeEvent(input$brush, {
cat("brushed\n")
})
}
))
'प्लॉटऑटपुट 'के मुताबिक कोई" माउस बटन अप "संदेश नहीं लगता है, जिसे आपको क्लिक करने और ब्रश करने के बीच उचित रूप से अंतर करने की आवश्यकता होगी। एक वर्कअराउंड एक टाइमआउट (कहें, 200 एमएस) को परिभाषित करना है, इस टाइमआउट के बाद ही एक क्लिक इवेंट का इलाज करें, और इस टाइमआउट के बाद सभी ब्रश घटनाओं को संगत रूप से अनदेखा करें। क्या ऐसा कोई कारण है कि आप इसके बजाय डबलक्लिक घटनाओं को न सुनें? – krlmlr
मैं बस उपयोगकर्ता अनुभव की वजह से dblclick नहीं चाहते हैं - यह बहुत सरल है और क्लिक करने के लिए और अधिक समझ में आता है। हो सकता है कि मैं सिर्फ बिस्तर (4:30 बजे) के लिए जाने की जरूरत है, लेकिन मुझे यकीन है कि कैसे अपने सुझाव मेरी समस्या ठीक कर देंगे, हालांकि, मैं थोड़ा के लिए इसके बारे में सोचा नहीं कर रहा हूँ और यह मेरी समस्या –
की देखभाल प्रतीत नहीं होता है यदि अंतिम क्लिक ईवेंट के बाद ब्रश ईवेंट 200 एमएस से कम होता है, तो आप इसे संभालते हैं। यदि नहीं, तो आप इसे अनदेखा करते हैं। ईवेंट के बाद आप केवल 200 एमएस क्लिक को संभालते हैं, इसके लिए आपको किसी प्रकार का टाइमर सेट करना होगा। – krlmlr