2013-08-05 15 views
22

Ggplot'ta, ayrı bir geom_line() argümanı ile eklediğim 4 ayrı satıra sahip bir çizimim var. Efsane eklemek istiyorum ama scale_colour_manual bu durumda çalışmıyor. Değişkenleri ayrı olarak eklediğimde efsaneler eklemenin doğru yolu nedir?Satırları el ile eklendiğinde ggplot'a efsane ekleme

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

Kodunuzu gönderir misiniz? 'Aes' çağrısında renk = "Satır Adı" 'nın çalışması gerekir. – Peyton

+0

Zaten bir argümanım var ama bunu bir efsane olarak göstermiyor. Kodumu gönderdim. – user1723765

+3

'color' argümanını' aes' içine yerleştirin ve renk adına ayarlamak yerine, efsanede görünmesini istediğiniz isme ayarlayın. Ardından bu rengi istenen renge eşlemek için scale_color_manual' kullanın. – Peyton

cevap

21

Sadece efsanesine hattın adı olmalıdır olursa olsun hiç aes renk adını ayarlamak:

İşte benim kod.

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

nota anahtarı şey estetik oluştururken olmasıdır:

Burada veri var, ama yok iris rastgele y değerine sahip çizgi kullanıldığı bir örnek eşleme, ancak bir veri çerçevesindeki bir sütuna rengi eşleme yerine, onu belirttiğiniz bir dizeyle eşleştiriyorsunuz. ggplot, bir veri çerçevesinden gelen değerlerde olduğu gibi, bu değere bir renk atar. Rengini ggplot2 devrettikleri beğenmezseniz

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

Her iki durumda da, o zaman scale_color_manual kullanarak kendi belirtebilirsiniz: Veri çerçevesine bir Species sütun ekleyerek Yukarıdaki aynı arsa üretilen olabilirdi

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

diğer alternatif sadece doğrudan hatları etiket veya bağlamdan bariz çizgilerle amacını yapmaktır. Gerçekten, en iyi seçenek özel durumunuza bağlıdır.

+2

bu, yukarıdaki kodda ilk aes() argümanında bulunan ilk değişken için çalışır, ancak ek geom_line() için – user1723765

+0

Bu sizin için çalışmıyor mu? Hem kod hem de veri - temelde nerede olduğunuzu görmek için çalıştırabileceğim bir örnek. – Peyton