49 votes

Comment donner de la couleur à chaque classe en nuage de points dans R ?

Dans un jeu de données, je souhaite prendre deux attributs et créer un nuage de points supervisé. Est-ce que quelqu'un sait comment donner une couleur différente à chaque classe ?

J'essaie d'utiliser col == c("red","blue","yellow") dans la commande plot mais je ne sais pas si c'est juste comme si j'inclus une couleur de plus, cette couleur vient également dans le nuage de points même si je n'ai que 3 classes.

Merci

69voto

Aniko Points 7555

Voici une solution utilisant des graphiques traditionnels (et les données de Dirk) :

 > DF <- data.frame(x=1:10, y=rnorm(10)+5, z=sample(letters[1:3], 10, replace=TRUE)) 
> DF
    x        y z
1   1 6.628380 c
2   2 6.403279 b
3   3 6.708716 a
4   4 7.011677 c
5   5 6.363794 a
6   6 5.912945 b
7   7 2.996335 a
8   8 5.242786 c
9   9 4.455582 c
10 10 4.362427 a
> attach(DF); plot(x, y, col=c("red","blue","green")[z]); detach(DF)

Cela repose sur le fait que DF$z est un facteur, donc lors d'un sous-ensemble par celui-ci, ses valeurs seront traitées comme des entiers. Ainsi, les éléments du vecteur de couleur varieront avec z comme suit :

 > c("red","blue","green")[DF$z]
 [1] "green" "blue"  "red"   "green" "red"   "blue"  "red"   "green" "green" "red"    

Vous pouvez ajouter une légende à l'aide de la fonction legend :

 legend(x="topright", legend = levels(DF$z), col=c("red","blue","green"), pch=1)

21voto

Ramnath Points 24798

Voici un exemple que j'ai construit sur la base de cette page .

 library(e1071); library(ggplot2)

mysvm      <- svm(Species ~ ., iris)
Predicted  <- predict(mysvm, iris)

mydf = cbind(iris, Predicted)
qplot(Petal.Length, Petal.Width, colour = Species, shape = Predicted, 
   data = iris)

Cela vous donne la sortie. Vous pouvez facilement repérer les espèces mal classées à partir de cette figure.

entrez la description de l'image ici

4voto

Ozan147 Points 2193

Voici comment je procède en 2018. Qui sait, peut-être qu'un débutant R le verra un jour et tombera amoureux de ggplot2 .

 library(ggplot2)

ggplot(data = iris, aes(Petal.Length, Petal.Width, color = Species)) +
  geom_point() +
  scale_color_manual(values = c("setosa" = "red", "versicolor" = "blue", "virginica" = "yellow"))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X