2013-01-18 18 views
5

Ich brauche wirklich Hilfe hier, weil ich weit über verloren bin.ggplot2 + Datum Struktur mit Skala X

Ich versuche ein Liniendiagramm zu erstellen, das die Leistung mehrerer Teams über ein Jahr zeigt. Ich habe das Jahr in Viertel unterteilt: 1.1.2012, 01.04.12. 8/1/12. 12/1/12 und geladen, um die CSV-Datenrahmen in R.

 Month    Team Position 
1 1/1/12  South Africa  56 
2 1/1/12    Angola  85 
3 1/1/12   Morocco  61 
4 1/1/12 Cape Verde Islands  58 
5 4/1/12  South Africa  71 
6 4/1/12    Angola  78 
7 4/1/12   Morocco  62 
8 4/1/12 Cape Verde Islands  76 
9 8/1/12  South Africa  67 
10 8/1/12    Angola  85 
11 8/1/12   Morocco  68 
12 8/1/12 Cape Verde Islands  78 
13 12/1/12  South Africa  87 
14 12/1/12    Angola  84 
15 12/1/12   Morocco  72 
16 12/1/12 Cape Verde Islands  69 

Wenn I ggplot2 versuchen, mit den Graphen der vierte Viertel 12/1/12 unerklärlichen Gründen bewegt sich zur zweiten Stelle zu erzeugen.

ggplot(groupA, aes(x=Month, y=Position, colour=Team, group=Team)) + geom_line() 

ich diesen Plan dann, um in eine Variable GA setzen, um zu versuchen scale_x zu verwenden, um das Datum zu formatieren:

GA + scale_x_date(labels = date_format("%m/%d")) 

Aber ich diesen Fehler erhalte:

Error in structure(list(call = match.call(), aesthetics = aesthetics, : 

konnte nicht finden function "date_format"

Und wenn ich diesen Code ausführen:

GA + scale_x_date() 

ich diesen Fehler:

Error: Invalid input: date_trans works with objects of class Date only 

ich einen Mac OS X bin mit R läuft 2.15.2

Bitte helfen.

+0

Es tut uns leid. Wie mache ich das? – Siya

+0

@Syia und als eine höfliche Aktion können Sie upvote, vor allem, wenn Sie die Lösung akzeptieren ... Dies wird Menschen ermutigen, Ihnen beim nächsten Mal zu helfen ... – agstudy

Antwort

6

Sein, weil, df$Month, (vorausgesetzt, Ihre data.framedf ist), das ist ein factor seine Ebene in dieser Reihenfolge hat.

> levels(df$Month) 
# [1] "1/1/12" "12/1/12" "4/1/12" "8/1/12" 

Die Lösung besteht darin, die Ebenen Ihres Faktors neu zu ordnen.

df$Month <- factor(df$Month, levels=df$Month[!duplicated(df$Month)]) 
> levels(df$Month) 
# [1] "1/1/12" "4/1/12" "8/1/12" "12/1/12" 

ggplot2_factor_levels

Edit: Alternative Lösung mit strptime

# You could convert Month first: 
df$Month <- strptime(df$Month, '%m/%d/%y') 

Dann sollten Sie den Code arbeiten. Schauen Sie sich die Handlung unter:

ggplot2_strptime_solution

+0

Vielen Dank. – Siya

+0

@Arun Wie hast du es geschafft, seine Daten zu lesen..wenn ich versucht habe, hatte ich ein Problem ... mit read.table (text = '..') – agstudy

Verwandte Themen