web-dev-qa-db-fra.com

Couleur de remplissage et de bordure dans geom_point (scale_colour_manual) dans ggplot

Je fais un nuage de points en utilisant ggplot. Je voudrais avoir des points avec une couleur et un remplissage particuliers (dans plot, colour="blue", fill="cyan4", Par exemple) mais je ne trouve pas comment. Ce que je dois à ce point est:

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) +  

(Dans le précédent geom_point, J'ai essayé d'ajouter shape=21 Comme je l'aurais fait dans 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.

C'est ce que j'obtiens sans "forme = 21"

enter image description here

C'est ce que j'obtiens quand j'ajoute "forme = 21". Dans les deux cas, il ignore scale_fill enter image description here

J'ai également essayé d'ajouter fill=c("blue","red") dans geom_point, mais R se plaint: "Erreur: longueurs incompatibles pour l'esthétique définie: forme, taille, remplissage".

Des suggestions sur la façon de l'obtenir? Quel est le problème avec scale_fill Dans mon code?

Merci beaucoup!

Les données (df) ressemblent à:

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
31
PGreen

Vous devrez utiliser des formes de 21 to 25. Ce sont ceux qui ont les propriétés colour et fill:

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

Si vous souhaitez également des couleurs différentes pour colour, alors:

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