Korrekte Verwendung von scale_fill_manual () zum Erstellen mehrfarbiger Histogrammleisten in ggplot2?

8

Ich habe eine Reihe von Datendateien, die ich in R untersuchen möchte, von denen ich jeweils einen Datenrahmen mit einer Spaltenvariablen erzeugen möchte, die ich für diese Frage als% kennzeichnen werde. Code%. Der Bereich von foo liegt im Intervall [0, 7000]. Als Teil meiner Datenexplorationsübung möchte ich ein 1D-Histogramm von foo erstellen, aber mit einer kleinen Wendung: Werte von foo im Bereich zwischen (1000, 7000) sind besonders "interessant" für mich, und deshalb möchte ich einzelne Histogrammbalken in diesem Datenbereich mit einer Palette von Farben farbig darstellen (dh, später möchte ich vielleicht die gleiche Palette wiederverwenden, um Daten von einigen anderen Spalten abzubilden, die ich zeitweilig aus den Daten weggelassen habe Englisch: www.db-artmag.de/2003/11/e/1/96-2.php Umgekehrt sind Werte von foo im Bereich [0,1000] für mich nicht so interessant, aber ich würde sie trotzdem gerne in der Histogramm, wenn auch grau, wenn Werte vorhanden sind.

In meinem Codebeispiel unten habe ich einen künstlichen Beispieldatenrahmen erstellt und versucht, das Histogramm mit foo zu zeichnen, indem ich die Füllfarben mit ggplot2 auswähle. Ich habe ein mehrfarbiges Histogramm erhalten, das jedoch nicht wie erwartet aussieht: scale_fill_manual() scheint meine Anweisungen zum Platzieren der Pausen zwischen den Farben ignoriert zu haben. Insbesondere scheint das Problem mit fehlenden Daten zu korrelieren: Intervalle, die keine Daten enthalten, scheinen nicht auf eine Farbe abgebildet zu werden, obwohl es meine Absicht war, dass sie es sein sollten. Das bedeutet auch, dass die Farbe Grau auf das Intervall (1000, 1500) anstatt auf [0, 1000] abgebildet wird, wie ich es beabsichtigt hatte.

Meine Frage: Wie kann ich ggplot2 dazu zwingen, bestimmte Farbfüllungscodes bestimmten Datenbereichen zuzuordnen, selbst wenn einige Intervalle leer sind und keine Daten enthalten und daher Histogrammbalken, die diesen Intervallen entsprechen, nicht erzeugt werden?

Ich habe eine erste Version meines Codes unten zusammen mit einem Dummy-Beispiel-Datenrahmen und einer handannotierten Version der Ausgabe, die erzeugt wird, eingefügt.

%Vor%

    
stachyra 17.03.2014, 22:07
quelle

1 Antwort

9

Sie können das drop Argument auf FALSE setzen. Siehe ?discrete_scale : drop unused factor levels from the scale (TRUE or FALSE)

%Vor%

    
Henrik 17.03.2014, 22:35
quelle

Tags und Links