मैं एक बड़े चमकदार ऐप पर काम कर रहा हूं। मुझे इस ऐप से प्लॉट के लाइन प्रकार को बदलने के लिए कहा गया है, कुछ ऐसा जो बहुत आसान होना चाहिए (बस type पैरामीटर का मान बदलें। अर्थात्, मुझे सेट करने के लिए type की आवश्यकता है l)। दुर्भाग्य से ggplot का उपयोग करना एक विकल्प नहीं है क्योंकि एक अलग पैमाने के साथ एक और प्लॉट इस प्लॉट के ऊपर रखा जाएगा।

हालांकि जब मैंने कोशिश की तो यह काम नहीं किया। type के b पर सेट होने के बावजूद, बिंदु एक रेखा से नहीं जुड़े हैं (दूसरी छवि देखें)। जब मैंने l की कोशिश की तो श्रृंखला प्रकट नहीं हुई!

अजीब बात यह है कि अगर मैं एक छोटे से एड-हॉक ऐप में यादृच्छिक रूप से जेनरेट किए गए डेटा (नीचे स्निपेट देखें) के साथ सटीक समान कोड (यूआई और सर्वर दोनों के लिए) का उपयोग करता हूं, तो यह काम करता है (पहले देखें) छवि) !!

मैं यह जानकर बहुत आभारी रहूंगा कि इस व्यवहार का कारण क्या हो सकता है और इस मुद्दे को कैसे हल किया जाए।

अन्यथा, क्या आप समान परिणाम प्राप्त करने का कोई वैकल्पिक तरीका सुझा सकते हैं?

पहली छवि (उम्मीद के मुताबिक): यहां छवि विवरण दर्ज करें दूसरी छवि: यहां छवि विवरण दर्ज करें मेरा कोड इस प्रकार है:

library(shiny)

# Define server logic required to draw a histogram
s <- shinyServer(function(input, output) {

  output$distPlot <- renderPlot({
    # some random data
    correlTs <- rnorm(200,50,2)
    dates <- seq(from=Sys.Date(),to=Sys.Date()+199, by=1)
    dateChar <- as.character(dates)
    rollingCorr <- data.frame(dateChar, correlTs)
    # same code as from larger app
    plot(
      as.Date(rollingCorr[, 1]),
      rollingCorr[, 2],
      type = "b",
      col = "dark blue",
      xlab = "Dates",
      ylab = "Correlation"
    )
  })
})

u <- shinyUI(
  navbarPage(
    "MR Tool",
    navbarMenu(
      "SAA",
      tabPanel("A plot",
        plotOutput("distPlot")))))

shinyApp(server = s, ui = u)

संपादित करें: उपरोक्त स्निपेट में UI कोड अनावश्यक रूप से तैयार किया गया लगता है .... यह उस बड़े प्रोजेक्ट से चिपकाया गया है जिसका मैंने पोस्ट की शुरुआत में उल्लेख किया है। उस बड़े ऐप के लिए, tabPanel का होना समझ में आता है।

1
hartmut 5 मई 2017, 19:02
FYI करें हालांकि मैंने इसे अभी तक आज़माया है, ggplot2 अब द्वितीयक अक्षों की अनुमति देता है - ggplot2.tidyverse.org/reference /sec_axis.html
 – 
Jeremy Voisey
5 मई 2017, 19:23
1
क्या आप सुनिश्चित हैं कि कोड सही है, ui थोड़ा अजीब लग रहा है, ..
 – 
Tonio Liebrand
5 मई 2017, 21:13
आप सही कह रहे हैं कि यह थोड़ा अजीब लग रहा है ... मैंने उसी के अनुसार पोस्ट को संपादित किया है। मुझे नहीं पता कि कोड सही है या नहीं, लेकिन यह चलता है और अपेक्षित परिणाम देता है। जब मैं इसे बड़े ऐप में एकीकृत करता हूं तो केवल यह काम नहीं करता है।
 – 
hartmut
6 मई 2017, 13:32
मैंने इसे पहले देखा है - बहुत पहले नहीं - लेकिन याद नहीं कर सकता कि यह क्या था। लेकिन यह त्रुटि का प्रतिकार नहीं है, यह इस बात का प्रतिवाद है कि इसे क्या होना चाहिए।
 – 
Mike Wise
6 मई 2017, 14:07

1 उत्तर

सबसे बढ़िया उत्तर

आम तौर पर मैं एक फिक्स पोस्ट करता हूं, हालांकि इस मामले में हमारे पास रेप्रो नहीं है, हमारे पास चाहिए काम करने का एक रेप्रो है, इसलिए मुझे यकीन नहीं है कि मुझे पता है कि क्या हो रहा है।

मेरा सबसे अच्छा अनुमान यह है कि डेटा में एनएएस हैं जो लाइनों को कनेक्ट होने से रोक रहे हैं। यदि आप प्लॉट के लिए प्रलेखन को देखते हैं तो आप देखेंगे कि यह इच्छित व्यवहार है। इस प्रकार ?lines के आउटपुट को देखते हुए आपको यह अंश मिल सकता है:

निर्देशांक में NA मान हो सकते हैं। यदि किसी बिंदु में या तो उसके x या y मान में NA होता है, तो इसे प्लॉट से हटा दिया जाता है, और ऐसे बिंदुओं पर या से रेखाएँ नहीं खींची जाती हैं। इस प्रकार लापता मूल्यों का उपयोग लाइनों में विराम प्राप्त करने के लिए किया जा सकता है।

यदि यह वास्तव में समस्या थी, तो आप लाइन जोड़कर इसे ठीक करने का प्रयास कर सकते हैं:

rollingCorr <- rollingCorr[complete.cases(rollingCorr),]

उन लापता मानों को हटाने के लिए डेटा को प्लॉट करने से ठीक पहले। या complete.cases के बजाय, शायद एक अलग तार्किक खंड जो केवल प्लॉट में उपयोग किए गए कॉलम को लक्षित करता है।

1
Mike Wise 10 मई 2017, 23:36