2016-12-15 2 views
0

Ich versuche, die Farbe der Linie in einem R-Diagramm (innerhalb der gleichen Reihe von Daten) zu variieren. Zum Beispiel, wenn Sie Punkte hatten, die die Temperatur für Wochen des Jahres zeigen, und sie sind verbunden mit geom_line() oder gleichwertig, wie würde ich sagen, dass die Linie für höhere Temperaturwochen tiefer rot ist und sich allmählich ändert, um in kälteren Wochen gelb zu sagen? (wenn BOTH Punkte und Linie über die gleiche Palette/den gleichen Gradienten variieren könnten - sagen wir Temperatur, wäre das ideal).Wie variiere LINE Farbe mit einer Variablen in R-Grafik (ggplot oder ähnlich)

bp.df <- NULL 
bp.weeks <- 26 
bp.days <- 7 * bp.weeks 
bp.df$day <- 1:bp.days 
bp.df$week <- ceiling(bp.df$day/7) 
bp.mean.normal <- 100 
bp.sd.normal <- 20 

bp.df <- as.data.frame(bp.df) 

bp.df$normal <- rnorm(nrow(bp.df),bp.mean.normal, bp.sd.normal) 
bp.df$day <- as.numeric(bp.df$day) 

# make sure ggplot2 is installed and loaded 

g <- ggplot(bp.df, aes(x = day, y = normal, color = normal)) + 
    geom_point() + 
    geom_line(col = bp.df$normal) 
g 

Warum stimmen die Linienfarben nicht mit den Werten der "normalen" Variablen überein? Ich verstehe, dass die Linien, da sie zwei Punkte verbinden, "entscheiden" müssen, welchen Wert man verwenden soll, aber diese Ausgabe scheint die Farben völlig zufällig zu machen.

Wenn das Variieren über einen Gradienten nicht funktioniert, wie würde ich die Linie für die ersten 50 Tage rot machen, grün für die nächsten 50 usw.?

+1

Es _does_ match; Es wird der Wert von "normal" für den am weitesten links liegenden Punkt des Segments verwendet, da dies der Vektor ist, den Sie über "aes" übergeben. Um die Farbe für jeweils 50 Tage variieren zu lassen, füge eine Variable hinzu, die als Farbästhetik übergeben wird, z. 'ggplot (bp.df, aes (x = tag, y = normal, farbe = schneiden (tag, seq (0, 200, 50)))) + geom_point() + geom_line()' – alistaire

+0

Danke, das und die Der nächste Kommentar hat meine Verwirrung eindeutig geklärt. Natürlich ist eine separate Variable sinnvoll, um die Farben zu steuern. –

Antwort

0

Try this:

g <- ggplot(bp.df, aes(x=day, y = normal, color = normal)) + geom_point() + 
geom_line(aes(color=normal)) 

g 

Es scheint, das col Argument als die Farbe im aes Argumente unterscheidet.

+0

Pro [diesen Beitrag] (http://stackoverflow.com/questions/32543340/behavior-ggplot2-aes-in-combination-with-facet-grid-when-passing-variable-wi), mit '$' in ' aes kann zu unerwarteten Ergebnissen führen. Sie können diesen Code in 'g <- ggplot (bp.df, aes (x = Tag, y = normal, Farbe = normal)) + geom_point() + geom_line()' ändern und erhalten das gleiche Ergebnis. Da Sie in Ihrem ursprünglichen 'aes'-Argument in' ggplot' bereits 'color = normal' haben, müssen Sie es nicht erneut aufrufen. –

+0

Danke, das habe ich nicht bemerkt. Es klingt wie ein Fehler, der hoffentlich behoben wird. – thc

+0

Danke Jungs, sehr hilfreich. –

Verwandte Themen