2017-01-27 4 views
1

Ich versuche, ein ggplot Liniendiagramm mit einer Zeitreihe zu erstellen, die Daten fehlt. Ich möchte die NA-Werte als NA auf dem Diagramm selbst bezeichnen, aber nicht die Linie durch diese Punkte zeichnen (dh eine Unterbrechung in der Linie haben). Unten ist ein reproduzierbares Beispiel von dem, was ich bisher versucht habe. Ich würde mir wünschen, dass das Diagramm für jedes Jahr, in dem die Nummer = NA ist, ein Label "NA" genau über dem Punkt y = 0 hat.Label-NA-Werte in geom_line

library(ggplot2) 

year <- c(1990:2000) 
number <- c(10, 20, 30, 40, NA, 50, 60, NA, 70, 80, 90) 

data <- data.frame(year, number) 

ggplot(data, aes(x = year, y = number)) + 
    geom_line() + 
    geom_text(data = subset(data, !is.na(number)), 
      aes(label = number), 
      hjust = 1, 
      vjust = -1) + 
    geom_text(data = subset(data, is.na(number)), 
      aes(label = "NA")) 

Antwort

2

Da die geom_text Funktionen der y Standort von der anfänglichen ggplot Funktion erben (die NA für diese Datensätze ist), müssen Sie explizit einen y Wert in der zweiten geom_text anrufen.

library(ggplot2) 

year <- c(1990:2000) 
number <- c(10, 20, 30, 40, NA, 50, 60, NA, 70, 80, 90) 

data <- data.frame(year, number) 

ggplot(data, aes(x = year, y = number)) + 
    geom_line() + 
    geom_text(data = subset(data, !is.na(number)), 
       aes(label = number), 
       hjust = 1, 
       vjust = -1) + 
    geom_text(data = subset(data, is.na(number)), 
       aes(y = 1, label = "NA")) 
+1

Um die Warnung 'Entfernte 2 Zeilen mit fehlenden Werten (geom_text)' zu vermeiden. ' Sie sollten auch Teilmenge Nummer (dh 'geom_text (Daten = Teilmenge (Daten,! is.na (Nummer)), AES (Label = Teilmenge (Anzahl,! is.na (Nummer))), hjust = 1, vjust = -1) ') –

+0

Auch, nur um ein Stickler zu sein, würde ich empfehlen,' Daten' als Objektnamen zu verwenden, da es eine Basis-R-Funktion ist. –

Verwandte Themen