2017-07-22 6 views
1

Nicht sicher, ob Titel mein Problem angemessen erklärt: Mit Facet Wraps, habe ich ein Diagramm, das eine Zusammenfassung der anderen Plots ist, dies führt dazu, dass Plot viel höhere Werte auf der Variablen, die ich Farben plotten durch. Alle anderen Plots zeigen also (meist) nur eine Farbe: Example graph.ggplot2 Facetten Set Plot Farben

Ich wünsche mir, dass die Einfärbung eher von den nicht zusammenfassenden Graphen abhängt, während es mir egal ist, ob die zusammenfassende Graphik nur eine Farbe anzeigt, da sie aus hohen Werten besteht (niedrigere Werte sollten trotzdem geeignete Farben anzeigen). Dankbar für jede Hilfe.

Beispielcode:

library(gdata) 
library(viridis) 
library(ggplot2) 
summary <- data.frame(x = 1:15, y = runif(15), z = runif(15, min = 15, max = 200)) 
dat2 <- data.frame(x = 1:15, y = runif(15), z = runif(15, min = 0, max = 30)) 
dat3 <- data.frame(x = 1:15, y = runif(15), z = runif(15, min = 0, max = 30)) 
dat4 <- data.frame(x = 1:15, y = runif(15), z = runif(15, min = 0, max = 30)) 
dat <- combine(summary, dat2, dat3, dat4) 

p <- ggplot(dat, aes(x = x, y = y)) + 
geom_point(aes(color = z)) + 
scale_color_viridis(option = "magma") + 
theme(panel.background = element_rect(fill = "grey93"), 
    strip.background = element_blank(), 
    panel.grid = element_blank(), 
    panel.border = element_rect(fill = NA, colour = "black", size = 0.5, linetype = "solid"))` 

p1 <- p + facet_wrap(~source) 
+0

Ist es in Ordnung, wenn Sie nur die Werte für 'z' für diese 'Zusammenfassung' Zeilen auf 0 setzen? Wenn ja, führe diese Zeile aus, bevor du den 'ggplot()' Code ausführst: 'dat <- mutate (dat, z = if_else (source ==" summary ", 0, z))' – Phil

+0

Leider nicht, da diese Werte immer noch sind sind interessante Informationen, und während ich erwarte, dass die meisten ziemlich hoch sind, könnten einige niedriger sein. – Jaeoc

Antwort

1
summary <- data.frame(x = 1:15, y = runif(15), z = runif(15, min = 15, max = 200)) 
dat2 <- data.frame(x = 1:15, y = runif(15), z = runif(15, min = 0, max = 30)) 
dat3 <- data.frame(x = 1:15, y = runif(15), z = runif(15, min = 0, max = 30)) 
dat4 <- data.frame(x = 1:15, y = runif(15), z = runif(15, min = 0, max = 30)) 
dat <- combine(summary, dat2, dat3, dat4) 
dat_ <- subset(dat, source != "summary") 

cut_off <- 70 # adjust here where you want the cut-off of z values to be. 
summary2 <- subset(dat, source == "summary" & z < cut_off) 

p <- ggplot(dat_, aes(x = x, y = y)) + 
geom_point(aes(color = z)) + 
geom_point(data = summary2, aes(col = z)) + 
scale_color_viridis(option = "magma") + 
theme(panel.background = element_rect(fill = "grey93"), 
     strip.background = element_blank(), 
     panel.grid = element_blank(), 
     panel.border = element_rect(fill = NA, colour = "black", size = 0.5, linetype = "solid")) 

p1 <- p + facet_wrap(~source) 

summary3 <- subset(dat, source == "summary" & z >= cut_off) 
p1 + geom_point(data = summary3, col = "red") # adjust the color aesthetic of the highest summary graph points here. 

Also, was Sie sehen, ist, Zusammenfassungsdaten mit z-Wert größer oder gleich 70 farbigen „rot“ in der Zusammenfassung Graphen, so dass sie im Kontrast zu dem Viridis Magma-Skala. (Experimentiere mit "weiß", es kontrastiert auch schön). Alle zusammenfassenden Datenbeobachtungen mit einem z-Wert von weniger als 70 folgen der gleichen Farbskala wie die anderen drei Diagramme im zusammenfassenden Diagramm. Senken Sie die Variable cut_off (die derzeit auf 70 gesetzt ist), um mehr Farbe in den Diagrammen dat2, dat3 und dat4 zu erhalten.

Dies ist die genaue Antwort, nach der Sie gesucht haben.

+0

Wusste nicht, dass Sie Diagramme auf einem Facettenwickel wie diesem hinzufügen können, und es zu schätzen wissen, es zu lernen. Ich würde jedoch immer noch wünschen, dass im zusammenfassenden Diagramm möglicherweise niedrigere Werte die entsprechenden Skalierungsfarben anzeigen, sodass dies mein Problem nicht ganz löst. – Jaeoc

+0

Ich habe Änderungen an meiner ursprünglichen Antwort vorgenommen. Sag mir, ob das funktioniert, und falls ja, welche Anpassungen brauchst du, wenn es welche gibt. – Odysseus210

+0

Funktioniert auch nicht ganz. Ich brauche eine bestimmte Farbe, um den gleichen Wert in den Graphen darzustellen, um die Vergleichbarkeit zu gewährleisten, z. a z = 30 in einem Diagramm sollte die gleiche Farbe wie ein z = 30 in allen anderen Graphen haben. Ich benutzte ursprünglich gridextra, ging aber aus diesem Grund zu facettieren. Ich schätze die Versuche! – Jaeoc