web-dev-qa-db-fra.com

Tracer des points avec la couleur et la forme en fonction des variables de données

J'essaie de faire un nuage de points avec les couleurs de chaque point correspondant à une variable et la forme de chaque point correspondant à une autre variable. Voici quelques exemples de données et le code que j'ai utilisé pour créer le deuxième tracé:

Example data:(of 3 points)
 X    Y    att1    att2

.5    .5    1       A
.24   .8    3       B
.6    .7    5       C

code:(for image2)
> plot(X,Y, col=statc[att2], pch = 15)
> legend("right", statv, fill=statc)

Where:
> statv
[1] "A"  "B" "C"  
> statc
[1] "red"    "blue"   "orange"

J'ai fait cela individuellement mais je ne sais pas comment faire les deux. Voici deux parcelles:

1 enter image description here

2 enter image description here

Par exemple: je veux que les couleurs s'appliquent aux points avec le même att1 et les formes s'appliquent aux points avec le même att2

15
Nitro

L'un des domaines où ggplot2 excelle, comparé à d'autres tracés du système R, mappe les paramètres des tracés aux variables de données. (via le mécanisme esthétique)

library(ggplot2)
dat <- data.frame(X =runif(20),
                     Y =runif(20),
                     att1 = gl(5,20/5),
                     att2 =gl(3,20/3))
ggplot(dat,aes(x=X,y=Y,color=att1,shape=att2)) +
    geom_point(size=5) 

enter image description here

Vous pouvez également le faire dans le tracé de base, mais vous devez générer manuellement la légende ...

plot(dat$X,dat$Y,pch=as.integer(dat$att1),col=as.integer(dat$att1))

enter image description here

20
agstudy

C'est ce que tu veux? [df est vos données formatées comme ci-dessus.]

library(ggplot2)
ggplot(df) + geom_point(aes(x=X,y=Y,color=factor(att1),shape=att2),size=5)

Produit cela avec vos données:

3
jlhoward