2010-10-25 21 views
2

J'ai des données qui ressemble à ceci:R: Tracer plusieurs lignes sur le même axe avec la moyenne en gras?

df <- data.frame(time=1:6, a=c(100, 90, 91, 92, 91, 91.5), b=c(99.9, 90.3, 90.9, 91.8, 92, 91.5), c=c(100.3, 88.5, 90.5, 91.5, 91, 91.3)) 
df <- data.frame(df, mean=apply(df[,2:4], 1, mean)) 
> df 
    time  a b  c  mean 
1 1 100.0 99.9 100.3 100.06667 
2 2 90.0 90.3 88.5 89.60000 
3 3 91.0 90.9 90.5 90.80000 
4 4 92.0 91.8 91.5 91.76667 
5 5 91.0 92.0 91.0 91.33333 
6 6 91.5 91.5 91.3 91.43333 

Je veux tracer les lignes sur la même toile avec time sur l'axe x. Je veux que les lignes a, b et c soient légèrement transparentes (ou légèrement colorées) et que mean soit en gras et très clair.

Répondre

4

D'accord, cette fois dans ggplot! D'abord, vous devez faire fondre votre df jusqu'à un point par ligne, puis la magie de ggplot:

dfm = melt(df,"time",c("a","b","c","mean")) 
ggplot(dfm)+geom_line(
    aes(x=time,y=value,colour=variable)) + 
    scale_colour_manual(values=c("#FF000080","#00FF0080","#0000FF80","black")) 
+0

Parfait! Exactement ce que je cherchais. Merci! – griffin

2

Dans les graphiques de base, matplot:

matplot(df$time,df[,c("a","b","c","mean")], 
    type="l", 
    col=c("#FF000040","#00FF0040","#0000FF40","black"), 
    lty=1,lwd=3) 

tweak les couleurs à votre goût. Notez que les arguments sont répétés donc toutes les lignes ont lty = 1 et lwd = 3, mais les couleurs sont individuelles.

+1

oh indéxé ggplot2 . J'échoue à lire les tags. – Spacedman

+0

+1 Je suis ouvert à tout logiciel de traçage; quoi de mieux! – griffin

+0

Je ne fais pas une version graphique en treillis! – Spacedman

1

Spacedman ne fait pas de réseau, mais il semble assez simple:

xyplot(a+b+c+mean ~ time, data=df, type="l", 
      col=c("#FF000080","#00FF0080", "#0000FF80","black")) 
Questions connexes