2017-09-01 1 views
1

Ich habe einen Datensatz mit ähnlicher Struktur mit dem simulierten Balg:Assign verschiedene Farbrampen nach Kategorie in ggplot

dat <- data.frame(x=runif(1000,-10,10),y=runif(1000,-10,10)) 

I A-Säulen geschaffen, um die Quadranten, in denen X und Y höher/niedriger als Null zu informieren:

dat$cond <- NA 
dat$cond[which(dat$x>0 & dat$y>0)] <- "HH" 
dat$cond[which(dat$x>0 & dat$y<0)] <- "HL" 
dat$cond[which(dat$x<0 & dat$y<0)] <- "LL" 
dat$cond[which(dat$x<0 & dat$y>0)] <- "LH" 

aufgetragen ich diese Daten verschiedene Farben für jeden Quadranten zu erhalten:

ggplot(dat, aes(x, y, color=cond)) + 
geom_point(size=2, show.legend = FALSE) + 
theme_classic() + 
theme(text = element_text(colour="black", size = 26), aspect.ratio=1) + 
geom_hline(yintercept=0,color="gray20",linetype=2) + 
geom_vline(xintercept=0,color="gray20",linetype=2) + 
scale_color_manual(values=c("red","blue", "orange","green")) 

Ich brauche denselben Farbsatz, aber die Farbverläufe reichen von weiß näher zu null bis zu dunkler Farbe bis auf null.

Antwort

0

Vielleicht ist dies ein bisschen eine Umgehungslösung, aber Sie können die Alpha-Ästhetik mit einigen benutzerdefinierten Index verwenden, um den Effekt zu erzielen, den Sie beschreiben. Hier ist ein kurzes Beispiel (Sie können die Indexerzeugungsfunktion zwicken die Alpha beeinflussen):

library(ggplot2) 
dat <- data.frame(x = runif(1000, -10, 10), y = runif(1000, -10, 10)) 

dat$cond <- NA 
dat$cond[which(dat$x > 0 & dat$y > 0)] <- "HH" 
dat$cond[which(dat$x > 0 & dat$y < 0)] <- "HL" 
dat$cond[which(dat$x < 0 & dat$y < 0)] <- "LL" 
dat$cond[which(dat$x < 0 & dat$y > 0)] <- "LH" 
dat$alpha_idx <- (abs(dat$x) + abs(dat$y))/2 

ggplot(dat, aes(x, y, color = cond)) + 
    geom_point(aes(alpha = alpha_idx), size = 2, show.legend = FALSE) + 
    geom_hline(yintercept = 0, color = "gray20", linetype = 2) + 
    geom_vline(xintercept = 0, color = "gray20", linetype = 2) + 
    scale_color_manual(values = c("red", "blue", "orange", "green")) + 
    theme_classic() + 
    theme(text = element_text(colour = "black", size = 26), aspect.ratio = 1) 

Verwandte Themen