2011-06-29 33 views
5

में एक साजिश के लिए बिंदुओं के साथ रेखा जोड़ना मेरी सुविधा के लिए, मैं एक ऐसा फ़ंक्शन लिखना चाहता हूं जो एक लाइन प्लॉट और स्कैटर प्लॉट को पहले से मौजूद प्लॉट में जोड़ता है। मैंने परिभाषित किया:ggplot2

addlinetoplot <- function(dataset, varx, vary) 
    { 
     p <- geom_line(data=dataset, aes_string(x=varx, y=vary)) + 
      geom_point(data=dataset, aes_string(x=varx, y=vary)) 

     p 
    } 

उपरोक्त फ़ंक्शन काम नहीं करता है। यह काम करता है अगर मैं + साइन और geom_point() भाग हटा देता हूं। उपरोक्त काम नहीं करता है क्योंकि किसी कारण से कोई उन दो भूगर्भों को नहीं जोड़ सकता है। निम्नलिखित उदाहरण समस्या को दर्शाता है।

फिर, मैंने कोशिश की:

df1 <- data.frame(c1 = c(1:10), c2 = c(1:10)) 
c1 <- c(1:10) 
csq <- c1^2 
df2 <- data.frame(c1 = c(1:10), csq) 
pltbase <- ggplot() + geom_line(df1, aes(x="c1", y="c2")) 

# This does not work. 
pltbase + addlinetoplot(dataset=df2, varx = "c1", vary = "csq") 

मैं लगा समस्या बयान के साथ है:

addthistotheplot <- geom_line(data=df2, aes_string(x="c1", y="csq")) + 
        geom_point(data=df2, aes_string(x="c1", y="csq")) 

ऊपर बयान को परिभाषित करने की कोशिश कर रहा एक त्रुटि फेंकता है: द्विआधारी ऑपरेटर के लिए गैर-संख्यात्मक तर्क।

pltbase + addlinetoplot(dataset=df2, varx = "c1", vary = "csq") 

काम:

कैसे इतना है कि मैं कर सकते हैं मैं addlinetoplot() समारोह को परिभाषित कर सकते हैं। एक तरीका geom_line और geom_point को अलग करना है और प्रत्येक के लिए अलग-अलग फ़ंक्शन परिभाषा है। क्या एक ही समारोह में ऐसा करने का कोई तरीका है?

धन्यवाद!

उत्तर

11

मुझे अभी संदर्भ नहीं मिल रहा है, लेकिन एसओ पर कहीं जवाब है जो बताता है कि आप एक सूची के रूप में नए तर्कों को पार करके एक ggplot साजिश में जोड़ सकते हैं। तदनुसार, अपने कार्य हो जाता है:

addlinetoplot <- function(dataset, varx, vary) { 
    list(
    geom_line(data=dataset, aes_string(x=varx, y=vary)), 
    geom_point(data=dataset, aes_string(x=varx, y=vary)) 
) 
} 

और फिर अपने अंकन कोड की तरह दिखता है: में

pltbase <- ggplot() + geom_line(data = df1, aes(x=c1, y=c2)) 
pltbase + addlinetoplot(df2, varx = "c1", vary = "csq") 

परिणाम:

enter image description here

 संबंधित मुद्दे