ggplot अलग-अलग data.frames से दो भूखंडों के संयोजन


81

मैं दो ggplots को दो अलग-अलग डेटा.फ्रेम से, एक प्लॉट में मिलाना चाहता हूं। नीचे आपको कोड मिलेगा। मैं प्लॉट 1 और 2 या प्लॉट 3 और 4 को जोड़ना चाहता हूं।

df1 <- data.frame(p=c(10,8,7,3,2,6,7,8),
             v=c(100,300,150,400,450,250,150,400))
df2 <- data.frame(p=c(10,8,6,4), v=c(150,250,350,400))

plot1 <- qplot(df1$v, df1$p)
plot2 <- qplot(df2$v, df2$p, geom="step")

plot3 <- ggplot(df1, aes(v, p)) + geom_point()
plot4 <- ggplot(df2, aes(v, p)) + geom_step()

यह करना बहुत आसान है, लेकिन किसी तरह मैं इसे काम करने के लिए नहीं कर सकता। आपके समय के लिए धन्यवाद।


8
ggplot()वाक्यविन्यास का उपयोग करते हुए , आप प्रत्येक व्यक्तिगत परत के लिए उपयोग करने के लिए डेटा निर्दिष्ट कर सकते हैं, उदाहरण के लिएgeom_step(data=df2)
बैपटिस्ट

जवाबों:


78

जैसा कि बैपटिस्ट ने कहा, आपको जियोम स्तर पर डेटा तर्क को निर्दिष्ट करने की आवश्यकता है। भी

#df1 is the default dataset for all geoms
(plot1 <- ggplot(df1, aes(v, p)) + 
    geom_point() +
    geom_step(data = df2)
)

या

#No default; data explicitly specified for each geom
(plot2 <- ggplot(NULL, aes(v, p)) + 
      geom_point(data = df1) +
      geom_step(data = df2)
)

32
@ naught101 सबसे बाहरी कोष्ठक प्लॉट प्रिंट को उसके असाइनमेंट के समान लाइन में बनाने के लिए एक ट्रिक है। आप इस ट्रिक का इस्तेमाल दूसरे वेरिएबल्स के साथ भी कर सकते हैं। (my_variable <- 1:5)का क्लीनर संस्करण है my_variable <- 1:5; my_variable
रिची कॉटन

62

मेरे लिए एकमात्र कार्य समाधान, आधार वस्तु, ggplot के बजाय geom_line में डेटा ऑब्जेक्ट को परिभाषित करना था।

ऐशे ही:

ggplot() + 
geom_line(data=Data1, aes(x=A, y=B), color='green') + 
geom_line(data=Data2, aes(x=C, y=D), color='red')

के बजाय

ggplot(data=Data1, aes(x=A, y=B), color='green') + 
geom_line() + 
geom_line(data=Data2, aes(x=C, y=D), color='red')

अधिक जानकारी यहाँ


3

आप केवल qplot का उपयोग करने के लिए इस ट्रिक को अपना सकते हैं। आंतरिक चर का उपयोग करें $mapping। आप अपने भूखंडों में रंग = भी जोड़ सकते हैं, इसलिए इसे मैपिंग में भी डाला जाएगा, और फिर आपके भूखंडों को किंवदंती और रंगों के साथ स्वचालित रूप से जोड़ा जाएगा।

cpu_metric2 <- qplot(y=Y2,x=X1) 

cpu_metric1 <- qplot(y=Y1, 
                    x=X1, 
                    xlab="Time", ylab="%") 

combined_cpu_plot <- cpu_metric1 + 
  geom_line() +
  geom_point(mapping=cpu_metric2$mapping)+
  geom_line(mapping=cpu_metric2$mapping)

मैं इस दृष्टिकोण का उपयोग करके दो रंग कैसे डाल सकता हूं?
वैग्नर जॉर्ज

1
@WagnerJorge, qplot डॉक्स को पढ़ने और रंग जोड़ने की कोशिश करता है जब cpu_metric2 को इनिशियलाइज़ करता है, जैसे qplot(y=..., x=..., colour=...), तो अंदर रंग जोड़ेंgeom_line(mapping..., colour=...)
अलेक्जेंडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.