2012-08-30 21 views
7

ich jede Reihe in einer anderen Farbe in ggplot2, indem Sie so etwas wie diese plotten kann ...ggplot - Änderung der Linienbreite

colours <- c('red', 'blue') 
p <- ggplot(data=m, mapping=aes_string(x='Date', y='value')) 
p <- p + geom_line(mapping=aes_string(group='variable', colour='variable'), size=0.8) 
p <- p + scale_colour_manual(values=colours) 

Gibt es etwas Vergleichbares ich verschiedene Linienbreiten für jede Serie einstellen kann? (Ie. Ich mag eine dicke rote Linie verwenden, um den Trend und eine dünne blaue Linie zu zeichnen, die saisonbereinigte Reihe plotten.)

+2

Können Sie 'dput' Ihre Daten (' m')? – seancarmody

Antwort

11

Ich würde nur eine neue numerische Variable zu Datenrahmen hinzufügen

##You will need to change this to something more appropriate 
##Something like: 
##m$size = as.numeric(m$variable == "seasonal") 
m$size = rep(c(0, 1), each=10) 

dann eine Größe Ästhetik zu Ihrem Plotbefehl hinzufügen:

p = p + geom_line(aes(group=variable, colour=variable, size=size)) 
##Set the size scale 
p + scale_size(range=c(0.1, 2), guide=FALSE) 

Beachten Sie, dass ich hinzugefügt haben guide=FALSE die Größe Legende vermeiden angezeigt wird.

+0

Wie mache ich das Gegenteil? Ich würde gerne Linien in der Legende dicker machen, aber Linien auf der Handlung dünn bleiben lassen. – baltazar

+0

Sie sind wahrscheinlich am besten fragen eine neue Frage – csgillespie

+0

http://stackoverflow.com/q/16356052/258421 – baltazar

5

Sie könnten es gerne tun:

x <- 1:10 
y1 <- x 
y2 <- 1.5*x 
df <- data.frame(x=rep(x, 2), y=c(y1, y2), id=as.factor(rep(1:2, each=10))) 
ggplot(df) + geom_line(aes(x=x,y=y,group=id, colour=id, size=id)) + 
scale_size_manual(values=c(1,4)) 
+0

'scale_size_manual' ist eine sehr nützliche Funktion –

Verwandte Themen