2013-08-05 10 views
22

मेरे पास 4 अलग-अलग लाइनों के साथ ggplot में एक साजिश है जिसे मैंने एक अलग geom_line() तर्क के साथ जोड़ा है। मैं किंवदंती जोड़ना चाहता हूं लेकिन scale_colour_manual इस मामले में काम नहीं करता है। जब मैंने चर को अलग से जोड़ा तो किंवदंतियों को जोड़ने का सही तरीका क्या है?लाइनों को मैन्युअल रूप से जोड़े जाने पर ggplot में किंवदंती जोड़ना

ggplot(proba[108:140,], aes(c,four)) + 
    geom_line(linetype=1, size=0.3) + 
    scale_x_continuous(breaks=seq(110,140,5)) + 
    theme_bw() + 
    theme(axis.line = element_line(colour = "black", size=0.25), 
      panel.grid.major = element_blank(), 
      panel.grid.minor = element_blank(), 
      panel.border = element_blank(), 
      panel.background = element_blank()) + 
    theme(axis.text.x = element_text(angle = 0, hjust = +0.5, size=6,color="black")) + 
    theme(axis.text.y = element_text(angle = 0, hjust = -100, size=6, color="black")) + 
    theme(axis.ticks=element_line(colour="black",size=0.25)) + 
    xlab("\nTime-steps") + 
    ylab("Proportion correct\n") + 
    theme(axis.text=element_text(size=8),axis.title=element_text(size=8)) + 
    geom_line(aes(c,three), size=0.2, linetype=2) + 
    geom_line(aes(c,one),linetype=3, size=0.8, colour="darkgrey") + 
    geom_line(aes(c,two), linetype=1, size=0.8, colour="darkgrey") 
+0

क्या आप अपना कोड पोस्ट कर सकते हैं? 'Aes' पर कॉल में 'रंग =" रेखा का नाम "सेट करना चाहिए। – Peyton

+0

मेरे पास पहले से रंग में एक तर्क है लेकिन यह इसे एक किंवदंती के रूप में प्रदर्शित नहीं करता है। मैंने अपना कोड पोस्ट किया है। – user1723765

+3

'एईएस' के अंदर 'रंग' तर्क डालें, और उसे रंग के नाम पर सेट करने के बजाय, इसे उस नाम पर सेट करें जिसे आप किंवदंती में दिखाना चाहते हैं। फिर उस नाम को वांछित रंग में मैप करने के लिए 'scale_color_manual' का उपयोग करें। – Peyton

उत्तर

21

बस जो भी कथा पर लाइन के नाम होना चाहिए करने के लिए aes में रंग नाम सेट:

यहाँ मेरी कोड है।

मैं अपने डेटा की जरूरत नहीं है, लेकिन यहाँ iris यादृच्छिक y मूल्यों के साथ एक लाइन का उपयोग कर एक उदाहरण है:

library(ggplot2) 

line.data <- data.frame(x=seq(0, 10, length.out=10), y=runif(10, 0, 10)) 

qplot(Sepal.Length, Petal.Length, color=Species, data=iris) + 
    geom_line(aes(x, y, color="My Line"), data=line.data) 

enter image description here

ध्यान दें करने के लिए महत्वपूर्ण बात यह है कि आप एक सौंदर्य बना रहे है मैपिंग, लेकिन डेटा फ्रेम में कॉलम पर रंग मैप करने की बजाय, आप इसे निर्दिष्ट स्ट्रिंग पर मैप कर रहे हैं। ggplot उस मान को रंग असाइन करेगा, जैसे कि डेटा फ्रेम से आने वाले मानों के साथ। आप डेटा फ्रेम करने के लिए एक Species कॉलम जोड़ कर के रूप में ऊपर एक ही भूखंड का उत्पादन किया जा सकता था:

line.data$Species <- "My Line" 
qplot(Sepal.Length, Petal.Length, color=Species, data=iris) + 
    geom_line(aes(x, y), data=line.data) 

किसी भी तरह से, यदि आप रंग ggplot2 प्रदान करती है पसंद नहीं है, तो आप अपने खुद scale_color_manual का उपयोग कर निर्दिष्ट कर सकते हैं:

qplot(Sepal.Length, Petal.Length, color=Species, data=iris) + 
    geom_line(aes(x, y, color="My Line"), data=line.data) + 
    scale_color_manual(values=c("setosa"="blue4", "versicolor"="red4", 
           "virginica"="purple4", "My Line"="gray")) 

enter image description here

एक अन्य विकल्प बस सीधे लाइनों लेबल करने के लिए, या संदर्भ से स्पष्ट लाइनों के उद्देश्य बनाने के लिए है। वास्तव में, सबसे अच्छा विकल्प आपकी विशिष्ट परिस्थितियों पर निर्भर करता है।

+2

यह पहले चर के लिए काम करता है जो उपरोक्त कोड में पहले एईएस() तर्क में है, लेकिन अतिरिक्त geom_line() s – user1723765

+0

के लिए यह आपके लिए काम नहीं कर रहा है? क्या आप अपना पोस्ट कर सकते हैं कोड और डेटा दोनों - मूल रूप से एक उदाहरण है कि मैं यह देखने के लिए चला सकता हूं कि आप कहां हैं? – Peyton

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