2013-04-12 21 views
18

Sto facendo un grafico a dispersione usando ggplot. Mi piacerebbe avere punti con un colore e un riempimento particolari (in plot, colour="blue", fill="cyan4", ad es.) Ma non riesco a trovare il modo. Quello che ho a questo punto è:Colore riempimento e bordo in geom_point (scale_colour_manual) in ggplot

ggplot(df, aes(own,method)) + 
    panel.configuration + 
    scale_shape_identity() + #to use the 'plot' shape format. 
    geom_point(aes(color = factor(label)), position = "jitter",size=3) + 

(Nel precedente geom_point Ho provato ad aggiungere shape=21 come avrei fatto in plot)

scale_colour_manual(values=c("A"="chocolate3","B"="cyan4")) + 
    scale_fill_manual(values=c("A"="green", "B"="red")) + #DOES NOTHING... 
    xlim(7,47) + ylim(7,47)+ ... etc. 

Questo è ciò che ottengo senza "forma = 21"

enter image description here

Questo è ciò che ottengo quando aggiungo "forma = 21". In entrambi i casi ignora scale_fill enter image description here

Ho anche provato ad aggiungere fill=c("blue","red") in geom_point, ma R si lamenta: "Errore: lunghezze incompatibili per l'estetica set: forma, dimensione, di riempimento".

Qualche suggerimento su come ottenerlo? Cosa c'è di sbagliato con scale_fill nel mio codice?

Grazie mille!

dati (df) si presenta come:

21 15 A 
24 16 A 
24 17 A 
28 14 A 
24 15 A 
22 15 A 
20 18 A 
24 18 A 
34 9 B 
38 12 B 
41 19 B 
42 13 B 
36 12 B 
40 17 B 
41 14 B 
37 12 B 
40 13 B 
37 15 B 
35 15 B 

risposta

38

Dovrete utilizzare forme da 21 to 25. Questi sono quelli che hanno colour e fill proprietà:

ggplot(df, aes(own, method)) + 
    geom_point(colour="white", shape=21, size = 4, 
    aes(fill = factor(label))) + 
    scale_fill_manual(values=c("blue", "cyan4")) 

Se volete i colori differenti per colour così, allora:

+1

Grazie Arun. I tuoi suggerimenti funzionano perfettamente ma riempiono tutti i punti dello stesso colore. È possibile specificare un colore particolare per ciascuno come in 'trama'? Lo modificerei per fornire i dati. – PGreen

+1

Sì. È possibile. Sto solo cercando un dato per creare la trama .. :) – Arun

+1

@PGreen, prova questa modifica. Puoi fare lo stesso per 'colour' con' scale_colour_manual (values ​​= ...) 'se inserisci' colour' in 'aes (.)' (Modificato). – Arun

Problemi correlati