2016-08-02 31 views
1

Ich möchte ein Barplot mit Achse x die Anzahl der Monate und in Achse y den Wert einer Variablen zeichnen. Die Variable kann für einige Monate null sein. Wie kann ich die Achse x zwingen, immer die 12 Monate anzuzeigen?So zeigen Sie Nulldaten im Barplot an R

Mit V ein Datenrahmen wie:

month variable 
    1 125 
    2 45 
    3 158 
    4 15 
    5 58 
    6 78 
    7 89 
    9 15 
    10 85 
    11 799 
    12 55 

Hier im August (Monat 8) die Variable ist 0.

bp <- barplot(V[,2], axes = FALSE) 
axis(1, at = bp, labels=c("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec")) 

Dank

+0

Versuchen von 'NA' – jlesuffleur

+0

' NULL' Werte zu ersetzen Es ist schwer zu geben Sie eine bestimmte Antwort, ohne zu wissen, was 'V' sieht aus wie. Können Sie bitte ein [reproduzierbares Beispiel] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) zur Verfügung stellen? –

Antwort

1

Sie müssen Pad ein NA im August (Monat 8). Einfach

bp <- barplot(append(V[,2], NA, 7), axes = FALSE) 
axis(1, at = bp, labels=c("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec")) 

verwenden Allgemeiner würde ich dies tun:

x <- rep(NA, 12) 
x[V$month] <- V$variable 
bp <- barplot(x, axes = FALSE) 
axis(1, at = bp, labels=c("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec")) 

enter image description here

+0

Eine allgemeinere Lösung für das Padding ist das Erstellen eines neuen Datenrahmens mit allen 12 Monaten: 'df <- data.frame (month = 1: 12)'. Dann füge 'V' mit' df' zusammen (wobei 'V' der ursprüngliche Datenrahmen ist, möglicherweise mit einigen fehlenden Monaten):' V <- merge (df, V, all.x = TRUE) '. Jetzt haben alle fehlenden Monate entsprechende 'NA's in' V'. –

+1

Oder sparsamer: 'bp <- Barplot (ifelse (1:12% in% V $ Monat, V $ Variable, NA), Achsen = FALSE)'. –