2011-12-06 12 views
9

मैं निम्नलिखित ggplot में linetypes समायोजित करना चाहता हूँ। इस प्रकार मैं लाइन प्रकार का प्रतिनिधित्व करने के लिए डेटा.फ्रेम डीएफ में एक और कॉलम पेश करता हूं, लेकिन एक बार जब मैं इसे कारक में परिवर्तित करता हूं तो "विधि" के बजाय लिनटाइप किंवदंती में दिखाई देता है ... (परीक्षण 3 देखें)।ggplot2: किंवदंती में लाइन प्रकार + ऑर्डर कैसे समायोजित करें?

किंवदंती में मुझे "विधि" कैसे मिल सकता है? अंत में मैं स्वतंत्र रूप से linetype चुनें

  1. करने में सक्षम होना चाहते हैं,
  2. स्वतंत्र रूप से जिस क्रम में इन linetypes कथा में दिखाई देते हैं चुनते हैं, और
  3. इसी "विधि" कथा के रूप में दिखाया गया है पाठ।

यहाँ मेरी प्रयास कर रहे हैं:

require(ggplot2) 
set.seed(1) 
df <- data.frame(x=c(1:4, 2:5), 
       method=rep(c("a", "b"), each=4), 
       lt=rep(c(5,3), each=4), 
       value=rep(c(0,1), each=4)+runif(8)) 

## trial 1: 
ggplot(df, aes(x=x, y=value)) + 
    geom_point() + 
    geom_line(aes(group=method, linetype=method)) 
# fine, but not the linetypes I would like to have 

## trial 2: 
ggplot(df, aes(x=x, y=value)) + 
    geom_point() + 
    geom_line(aes(group=method, linetype=lt)) 
# correct linetypes, but no legend 

## trial 3: 
ggplot(df, aes(x=x, y=value)) + 
    geom_point() + 
    geom_line(aes(group=method, linetype=as.factor(lt))) 
# legend, but not the correct one (I would like to have the "group"ing 
# variable "method" in the legend as in trial 1) 
+0

'+ scale_linetype (नाम =" विधि ")' परीक्षण के साथ काम करने लगता है 3. – Chase

+0

जो मुझे कथा शीर्षक "विधि" देता है, लेकिन अभी भी मैं "3" के लिए और "5 "परीक्षण के रूप में" ए "और" बी "के बजाय किंवदंती ग्रंथों के रूप में –

उत्तर

16

उपयोग methodlinetype के रूप में है, लेकिन फिर मैन्युअल रूप से लाइनों के प्रकार आप चाहते हैं से मैप करें। आपको इस तरह एक और वैरिएबल पेश करने की आवश्यकता नहीं है।

ggplot(df, aes(x=x, y=value)) + 
    geom_point() + 
    geom_line(aes(linetype=method)) + 
    scale_linetype_manual(breaks=c("a","b"), values=c(5,3)) 

enter image description here

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