2017-04-18 4 views
0

Ich versuche, bestimmte Punkte eines Streudiagramms in R mit logischen Argumenten zu färben. Meine Daten sind eine Funktion von Geschlecht (M/F) und Fakultät (A/M/S/E). Ich möchte jede Fakultät färben, sagen grün, rot, blau, schwarz, und dann sollen die Weibchen nur als Umriß mit einer weißen Mitte erscheinen.Farbpunkte eines Plots in R

plot(year, logit.prop, type="n", xlab="Year of graduation", ylab="Logit proportion of survivors", ylim=c(-1,3)) 
points(year[faculty=="M"], logit.prop[faculty=="M"], pch=21, 
points(year[faculty=="A"], logit.prop[faculty=="A"], pch=21, bg="red", col="red") 

Dies ist ein Abschnitt des Codes ich zur Zeit verwendet wird, ist es eine Möglichkeit, R zu sagen, Punkte zu färben, wo der x-Achse Wert (das ist Jahr hier) sowohl weiblichen als auch A?

+0

Farbe kann einen Vektor z.B. col = ifelse (condition1 & condition2, 'red', 'black') –

Antwort

1

Wie der @ mr.joshuagordon sagte, können col und andere Argumente zu points Vektoren übernehmen. Da Sie, hier ist etwas nicht Daten liefern:

df <- data.frame(x = rep(1:4, each = 2), y = rep(1:2, times = 4), faculty = rep(c("A", "M", "S", "E"), each = 2), gender = rep(c("M","F"), times = 4)) 
df 
# x y faculty gender 
# 1 1 1  A  M 
# 2 1 2  A  F 
# 3 2 1  M  M 
# 4 2 2  M  F 
# 5 3 1  S  M 
# 6 3 2  S  F 
# 7 4 1  E  M 
# 8 4 2  E  F 
plot(y ~ x, data = df, pch = ifelse(gender == "M", 16, 21), col = factor(faculty)) 
text(y + 0.5 ~ x, data = df, labels = faculty) 

simple points

In diesem Fall arbeitete factor(faculty) weil Faktoren intern ganze Zahlen von 1 auf bis zu zählen sind. Sie können sehen, welche Farben für jede Rufnummer gesetzt mit:

palette() 
# [1] "black" "red"  "green3" "blue" "cyan" "magenta" "yellow" 
# [8] "gray" 

Wenn Sie verschiedene Farben wünschen, können Sie entweder conditionals (wie ifelse) auf faculty selbst verwenden, oder Sie können nur die Palette Farben definieren (siehe ?palette).

+0

Benötigt er nur wenige Farben, kann er einfach einen Farbvektor definieren: 'my_colors <-c (" grey80 "," firebrick "," navyblue "," orange ")' und rufen Sie es im Diagramm: 'col = my_colors [Faktor (df $ Fakultät)]' Leichter als Palette;) – Toshiro