2016-07-29 7 views
-1

Unten ist mein Dataset und ich möchte Variablen plotten states, o7, cas und df im Laufe der ZeitGrundstück mit ggplot2

year states o7 cas df 
1989  151 117 35 16 
1990  150 158 27 12 
1991  150 194 43 12 
1992  150 173 38 9 
1993  151 169 35 14 
1994  153 169 23 9 
1995  153 158 22 8 
1996  153 157 18 6 
1997  153 214 18 11 
1998  154 186 17 5 
1999  154 222 16 7 
2000  155 210 20 4 
2001  154 210 19 2 
2002  155 231 17 2 
2003  155 268 18 1 
2004  155 236 16 3 
2005  155 263 19 1 
2006  155 238 17 5 
2007  155 284 16 3 
2008  155 318 20 4 
2009  155 295 18 5 
2010  155 330 20 4 
2011  155 312 16 3 

I ggplot2 Paket verwenden diese

ggplot(dat, aes(year, o7)) + 
    geom_line() 

jedoch zu tun, ich es ist nicht möglich, andere Variablen in demselben Diagramm zu plotten.

  • Wie zeichne ich andere Variablen in den Daten? Und wie ordne ich sie neue Etiketten (in ggplot)?

Antwort

2

Es wird hauptsächlich empfohlen, die melt-Funktion aus dem reshape2-Paket zu verwenden, wenn Sie mehrere Spalten im selben ggplot darstellen möchten.

# df = your example 
require(reshape2) 
df_melt = melt(df, id = "year") 

ggplot(df_melt, aes(x = year, y = value, color = variable)) + geom_point() 

enter image description here

Wie @Nathan Tag erwähnt, haben Spalten sehr unterschiedliche Bereiche, ein facet_wrap mit einer Möglichkeit sein könnte:

ggplot(df_melt, aes(x = year, y = value, color = variable)) + geom_point() + 
facet_wrap(~variable, scales = "free") 

enter image description here

+0

Dank, sieht gut aus. Eine Sache: Wie man zu Linien mit verschiedenen Formen anstelle von Punkten mit verschiedenen Farben wechselt - ich bin farbenblind. – FKG

+0

zu Linien zu wechseln ist einfach geom_lines(), aber wie man sie in verschiedenen Formen bekommt? – FKG

+0

Sie können 'linetype = variable' innerhalb des' aes' des 'ggplot' Objektes einfügen, wenn Sie' geom_line' anstelle von 'geom_point' verwenden. Wenn Sie 'shape = variable' in' aes' verwenden und dann 'geom_point' verwenden, wird die Form der Punkte geändert. – bVa

1

ggplot wird auf Layern von Grafiken angegeben. Wenn Sie mehrere Variablen alle aufgetragen gegen time aufnehmen möchten, müssen Sie eine einzigartige Lage für jeden:

ggplot(dat, aes(x = year, y = o7)) + 
geom_line() + 
geom_line(aes(y = cas)) + 
geom_line(aes(y = df)) 

Beachten Sie, dass alle Schichten in einer ggplot Funktion (dh geom_line.) Versuchen, die aes(...) Satz zu erben von . mit einer anderen Option wie aes(colour = ?, shape = ?) fro Karte cas und df Dieses Verhalten wird durch einen Parameter gesteuert inherit.aes =, die standardmäßig TRUE

gesetzt ist, weil es wie Ihre Spalten sieht sehr unterschiedliche Bereiche haben könnten Sie besser dran sein. Etwas zum Spielen für maximale visuelle Wirkung.