2015-09-26 16 views
6

Ggplot ile iki veri kümesini grafik halinde çiziyorum. Bir çizgi olmalı, diğeri puan olmalı. Aşağıda bu çalışma alabilirsiniz:ggplot2 - İki veri kümesi için çizgi ve noktalar içeren grafik lejant sorunları

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

tek sorun efsanesi! Gördüğünüz gibi, "gözlenen" veri kümesinin, yalnızca bir nokta olması gerektiğinde, açıklamada bir satır + noktası vardır. Ve "tahmin" için tersine, sadece bir çizgi olmalı.

Daha temiz/daha doğru bir açıklama almanın bir yolu var mı?

cevap

5

Göstergeyi override.aes kullanarak arsa değiştirmeden değiştirebilirsiniz. Örnek veri sağlamadınız, bu yüzden resimde kullanılmak üzere dahili mtcars veri çerçevesini kullandım. Kodun anahtar satırı guides ile başlar. shape=c(16,NA), rengini NA olarak ayarlayarak, lejantın nokta işaretleyicilerinden kurtulur. linetype=c(0,1), linetype değerini 0 olarak ayarlayarak diğer lejand çizgisinden kurtulur. Ayrıca, her kod satırından sonra grafiği kaydetmeniz gerekmez. Her bir satıra bir + ekleyin ve hepsini aşağıdaki örnekte olduğu gibi tek bir ifade ile birleştirin.

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

İlgili konular