Produnis uninteressant – aber wahr

24. Mai 2013

Häufigkeiten von factor-levels für Gruppen plotten

Filed under: dev/null — Schlagwörter: , , — produnis @ 09:29

Gegeben ist folgende Tabelle:

JAHR LAND
1999 UK
1999 UK
1999 UK
1999 UK
2000 UK
2000 UK
2001 UK
2001 UK
2001 UK
2001 UK
2003 UK
2003 UK
2003 UK
2003 UK
2004 UK
2005 UK
2005 UK
2005 UK
2005 UK
2006 UK
2006 UK
2008 UK
2008 UK
2008 UK
2008 UK
2008 UK
2009 UK
2001 GER
2002 GER
2003 GER
2003 GER
2004 GER
2004 GER
2005 GER
2005 GER
2006 GER
2006 GER
2006 GER
2007 GER
2008 GER
2009 GER
2010 GER
2011 GER
2011 GER
2011 GER
2006 UK
2011 GER
2012 GER
2012 GER
2012 GER
2005 USA
2007 USA
2007 USA
2009 USA
2010 USA
2010 USA
2011 USA
2012 USA
2012 USA

Jetzt möchte ich mit ggplot eine Übersichtsgraphik erstellen. Hierbei soll die X-Achse die Jahreszahlen wiederspiegeln. Auf der Y-Achse sollen die Häufigkeiten der einzelnen Länder pro Jahr angezeigt werden.

Da die Länder-Variable ein factor ist, benötige ich einen ggplot-Code, welcher die Häufigkeiten der einzelnen factor-levels (Länder) gruppiert nach Jahren ausrechnet…

Das funktioniert hier „manuell“ per

# Datensatz einlesen
dat < - read.table("http://www.produnis.de/R/Faktorfrequenz.txt", sep="\t", colClasses = "character", header=T)

# Berechnung
with(dat,table(JAHR,LAND))

Aber wie "übersetze" ich das in einen ggplot-Code? Da ggplot selbst statistische Berechnungen durchführen kann, läge der Vorteil eines "reinen" ggplot-Codes darin, dass neue factor-levels (in diesem Fall also ein neues LAND) direkt in der Grafik eingebunden wäre, ohne dass man den Code ändern müsste.

ggplot-Code

Und so funktioniert es:

# Datensatz einlesen
dat < - read.table("http://www.produnis.de/R/Faktorfrequenz.txt", sep="\t", colClasses = "character", header=T)

# plotten
#------------
# Variante 1
ggplot(df, aes(x=factor(JAHR), fill=LAND)) + 
  geom_bar(position="dodge")

FreqPlot1

# Variante 2
ggplot(df, aes(JAHR)) + 
  geom_freqpoly(aes(y= ..count.., fill=LAND, group=LAND, colour=LAND),stat="bin",binwidth=1)

FreqPlot2

# Variante 3
ggplot(df, aes(JAHR)) + 
  geom_area(aes(y= ..count.., fill=LAND, group=LAND),stat="bin",binwidth=1)

FreqPlot3

Weblinks

Siehe auch

Dieser Artikel ist Teil des Handbuchs

Powered by WordPress