2014-09-02 35 views
11

Desidero trasmettere tre tipi di informazioni in un grafico a punti. Posso usare il colore, la forma e il riempimento (i miei dati effettivi hanno troppi punti per utilizzare le dimensioni in modo efficace). Ma sarebbe meglio se il colore di riempimento fosse lo stesso del colore del contorno.Forme riempite e vuote in cui il colore di riempimento è il colore della linea

Il più vicino che può ottenere è questo:

data(mtcars) 
p <- ggplot(mtcars,aes(x=mpg,y=wt))+ 
    geom_point(aes(color=factor(cyl),shape=factor(gear),fill=factor(vs)))+ 
    scale_fill_manual(values=c("black",NA))+scale_shape_manual(values=c(21,22,23)) 

enter image description here

che riempie nero in tutti i colori di contorno, brutta. Qualche idea su come riempire i punti rossi con il rosso e i punti blu con il blu?

risposta

17

Introdurre NA e mappare quelli al colore NA con scale_fill_discrete:

ggplot(mtcars,aes(x=mpg,y=wt)) + 
    geom_point(size=10, 
    aes(
     color=factor(cyl), 
     shape=factor(gear), 
     fill=factor(ifelse(vs, NA, cyl))   # <---- NOTE THIS 
)) + 
    scale_shape_manual(values=c(21,22,23)) + 
    scale_fill_discrete(na.value=NA, guide="none") # <---- NOTE THIS 

produce:

enter image description here


EDIT: Per affrontare Mr Flick, siamo in grado di imbrogliare e aggiungi livelli/alfa. Nota abbiamo bisogno di aggiungere uno strato perché per quanto ne so non c'è modo di controllare in modo indipendente per alpha colore e inserire:

library(ggplot2) 
ggplot(mtcars,aes(x=mpg,y=wt, color=factor(cyl), shape=factor(gear))) + 
    geom_point(size=10, aes(fill=factor(cyl), alpha=as.character(vs))) + 
    geom_point(size=10) +  
    scale_shape_manual(values=c(21,22,23)) + 
    scale_alpha_manual(values=c("1"=0, "0"=1)) 

enter image description here

+1

Clever. Ma non è facile aggiungere una legenda per il valore 'vs' che indica quali sono riempiti e quali sono vuoti, vero? In questo momento non è chiaro qual è la differenza tra quelli pieni e quelli vuoti. – MrFlick

+1

@MrFlick, giusta critica. Vedi l'aggiornamento. – BrodieG

+1

Un'altra soluzione intelligente/soluzione alternativa. Mi dispiace di avere solo un voto da dare. – MrFlick

Problemi correlati