2017-10-15 2 views
0

Ich bin neu in R, aber lerne alles was ich kann. Ich erhalte die folgende Nachricht, wenn ich ein Facetten-Histogramm für Dichtediagramme zeichne.Entfernte Datenpunkte in geom_bar Histogramm

Warnmeldung: Entfernte ### Zeilen mit fehlenden Werten (geom_bar).

ich die Meldung Ausgabe eine x-Achse wegen möglicherweise gelesen haben nicht alle Datenpunkte zeigt, jedoch nach der Untersuchung ist es nicht so erscheint.

Der Fehler scheint in der "Position =" füllen "" Abschnitt des Geom_histogram. Wenn die Position = "fill" entfernt wird, werden keine Fehler erzeugt.

Jede Hilfe oder Beratung wird sehr geschätzt.

library(ggplot2) 

df <- data.frame(recividism = sample(0:2, 100, replace = T), 
       TotalDays = sample(15:1000, 100, replace = T), 
       NumEnroll = sample(1:7, 100, replace = T)) 

df$recividism <- as.factor(df$recividism) 

levels(df$recividism) <- c("Not Perm", "Perm", "Rec") 

ggplot(data = df, aes(x = TotalDays)) + 
    geom_histogram(aes(fill = recividism), position = "fill") + 
    facet_grid(facets = NumEnroll ~ .) 

Antwort

1

Es ist ein bisschen verwirrend, ich stimme zu. Natürlich fehlen keine wirklich fehlenden Daten. Und wie Sie gesagt haben, wenn Sie stack statt fill, alles ist in Ordnung.

Was passiert, ist, dass ggplot intern eine Tabelle für jede x nach Gruppe (Farbe in diesem Fall) durch Facettenkombination erstellt. Im Fall von stack werden die Kombinationen ohne Werte stillschweigend nicht gezeichnet. Dies liegt daran, dass sie auf Null gestapelt sind. Aber für fill gibt es eine Division durch die Summe, und da die Summe 0 ist, wären die Antworten Inf, aber stattdessen NA gesetzt.

Sie können dies sehen:

p <- ggplot(data = df, aes(x = TotalDays)) + 
    geom_histogram(aes(fill = recividism), position = "fill") + 
    facet_grid(facets = NumEnroll ~ .) 

head(ggplot_build(p)$data[[1]], 10) 

Shows:

 fill y count   x  xmin  xmax  density ncount ndensity PANEL group ymin ymax colour size linetype alpha 
1 #619CFF NA  0 33.86207 16.93103 50.79310 0.000000000  0 0.0000  1  3 NA NA  NA 0.5  1 NA 
2 #00BA38 NA  0 33.86207 16.93103 50.79310 0.000000000  0 0.0000  1  2 NA NA  NA 0.5  1 NA 
3 #F8766D NA  0 33.86207 16.93103 50.79310 0.000000000  0 0.0000  1  1 NA NA  NA 0.5  1 NA 
4 #619CFF NA  0 67.72414 50.79310 84.65517 0.000000000  0 0.0000  1  3 NA NA  NA 0.5  1 NA 
5 #00BA38 NA  0 67.72414 50.79310 84.65517 0.000000000  0 0.0000  1  2 NA NA  NA 0.5  1 NA 
6 #F8766D NA  0 67.72414 50.79310 84.65517 0.000000000  0 0.0000  1  1 NA NA  NA 0.5  1 NA 
7 #619CFF 1  1 101.58621 84.65517 118.51724 0.007382892  1 135.4483  1  3 0 1  NA 0.5  1 NA 
8 #00BA38 1  0 101.58621 84.65517 118.51724 0.000000000  0 0.0000  1  2 1 1  NA 0.5  1 NA 
9 #F8766D 1  0 101.58621 84.65517 118.51724 0.000000000  0 0.0000  1  1 1 1  NA 0.5  1 NA 
10 #619CFF NA  0 135.44828 118.51724 152.37931 0.000000000  0 0.0000  1  3 NA NA  NA 0.5  1 NA 

Sie sehen NA s für y in vielen Reihen gibt es, und das ist, wo Sie die Warnung erhalten aus .

Hoffe, dass die Dinge ein wenig aufklärt. Und so stellt sich heraus, dass es tatsächlich passiert, weil Sie für einige Ebenen von x keine Daten haben. Aber das ist nicht die ganze Geschichte.

+0

Danke für die Antwort. Nur zur Verdeutlichung, wenn keine Informationen zur Anzeige einer Kategorie innerhalb der Facette und des Fachs vorhanden sind, wird eine NA in der Tabelle angezeigt, die aus den Basisdaten erstellt wurde, die zum Zeichnen des gefüllten Histogramms verwendet wurden. Als nächstes entfernt ggplot beim Zeichnen des facettierten Histogramms alle NAs aus der Tabelle .... und das nennt man "fehlende" oder "entfernte" Werte? – Nate

+0

Technisch sind sie keine Histogramme, sonst nicht korrekt ja! – Axeman