2015-09-26 6 views
6

मैं ggplot के साथ दो डेटा सेट ग्राफ़ कर रहा हूं। एक रेखा होना चाहिए, दूसरा अंक होना चाहिए। मैं नीचे के रूप में यह काम कर प्राप्त कर सकते हैं:ggplot2 - दो डेटा सेट के लिए रेखा और बिंदुओं के साथ ग्राफ किंवदंती मुद्दे

d1 <- filter(d, variable==lineVar) 
d2 <- filter(d, variable==dotVar) 
g <- ggplot(d1, aes(clarity, x=xv, y=yv)) 
g <- g + geom_line(aes(colour=variable)) 
g <- g + ggtitle(title) 
g <- g + xlab(xl) 
g <- g + ylab(yl) 
g <- g + geom_point(data=d2, size=4, aes(colour=variable)) 

Output of ggplot2

केवल मुद्दा पौराणिक कथा है! जैसा कि आप देख सकते हैं, "मनाए गए" डेटा सेट में किंवदंती में एक रेखा + बिंदु है, जब यह वास्तव में केवल एक बिंदु होना चाहिए। और "भविष्यवाणी" के लिए विपरीत, यह सिर्फ एक रेखा होना चाहिए।

क्या क्लीनर/अधिक सटीक किंवदंती पाने का कोई तरीका है?

उत्तर

5

आप override.aes का उपयोग करके साजिश को बदलने के बिना किंवदंती को बदल सकते हैं। आपने नमूना डेटा प्रदान नहीं किया है, इसलिए मैंने चित्रण के लिए अंतर्निहित mtcars डेटा फ्रेम का उपयोग किया है। कोड की मुख्य पंक्ति guides से शुरू होती है। shape=c(16,NA) अपने रंग को NA पर सेट करके किंवदंती के बिंदु चिह्नकों में से एक से छुटकारा पाता है। linetype=c(0,1) अपनी लिनटाइप को 0 पर सेट करके अन्य किंवदंती की रेखा से छुटकारा पाता है। साथ ही, आपको कोड की प्रत्येक पंक्ति के बाद साजिश को बचाने की आवश्यकता नहीं है। प्रत्येक पंक्ति में बस + जोड़ें और उन्हें नीचे दिए गए उदाहरण में, एक ही कथन में सभी को एकसाथ स्ट्रिंग करें।

library(reshape2) 
library(ggplot2) 

mtcars$mpg.line = mtcars$mpg 
mtcars.m = melt(mtcars[,c("mpg","mpg.line","wt")], id.var="wt") 
mtcars.m$variable = factor(mtcars.m$variable) 

ggplot() + 
    geom_line(data=mtcars.m[mtcars.m$variable=="mpg.line",], 
      aes(wt, value, colour=variable), lwd=1) + 
    geom_point(data=mtcars.m[mtcars.m$variable=="mpg",], 
      aes(wt, value, colour=variable), size=3) + 
    guides(colour=guide_legend(override.aes=list(shape=c(16,NA), linetype=c(0,1)))) + 
    theme_grey(base_size=15) 

enter image description here

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