[resolu] rainbow : Calculer le nombre de couleur automatiquement

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Christophe Genolini
Messages : 698
Enregistré le : 12 Juin 2006, 21:37
Contact :

[resolu] rainbow : Calculer le nombre de couleur automatiquement

Messagepar Christophe Genolini » 26 Mar 2017, 14:49

Bonjour

Je souhaite tracer un histogramme et le colorier avec rainbow. Mais je voudrais que cela soit fait automatiquement sans avoir a préciser l'argument de rainbow. Savez-vous s'il y a un moyen de récupérer le nombre de colonne d'un histogramme ? Ou éventuellement,connaissez-vous la formule permettant de calculer le nombre de colonne ?

Merci
Christophe
--
Christophe
https://rplusplus.com

Victor Cazalis
Messages : 68
Enregistré le : 24 Aoû 2014, 06:19

Re: rainbow : Calculer le nombre de couleur automatiquement

Messagepar Victor Cazalis » 26 Mar 2017, 22:27

Bonjour,

Le plus simple à mon avis est de stocker votre histogramme dans un objet :

objet<-hist(.......)

Vous pouvez ensuite obtenir le nombre de colonnes par la commande : length(objet$counts) qui calcule la longueur du vecteur contenant les effectifs de chaque colonne.

Victor

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: rainbow : Calculer le nombre de couleur automatiquement

Messagepar Logez Maxime » 27 Mar 2017, 09:01

Bonjour,

Le nombre de classes se calcul avec les fonctions nclass.xx, par défaut nclass.Sturges et ensuite hist utilise la fonction pretty pour définir les breaks :

Code : Tout sélectionner

pretty(range(x), nclass.Sturges(x))
Le nombre classe étant la longueur-1 de ce vecteur. Par contre ça ne te dira pas s'il y a des colonnes "vides". Si elles doivent compter pour définir les couleurs alors le code précédent fonctionne, sinon pas d'autres moyens que de récupérer les sorties de l'histogramme et de compter le nombre de colonnes avec des valeurs > 0 :

Code : Tout sélectionner

x <- c(-0.08, -1.39, 0.78, 0.54, 0.62, 1.25, 0.09, -0.43, -1.69, 0.12,
-1.1, -0.48, 0, 0.93, 1.76, 2.06, 0.04, -0.67, 1.69, -1.56, -0.53,
-1.03, 0.94, 0.15, -0.67, 0.62, -3.02, 1.31, 0.45, 0.87, -0.17,
-0.71, -1.35, 1.46, 2.19, 1.67, 0.75, -0.56, -0.61, 0.45, -1.31,
-0.59, 1.91, -0.63, 0.7, -0.93, -0.49, -1.28, 0.43, -1.48, -1.98,
0.14, -0.17, 0.58, 0.84, 1.13, 0.27, 0.89, -0.74, 0.35, 1.57,
0.41, -0.36, 0.68, -0.09, 1.97, -0.83, -1.38, -1.57, -1.24, 0.57,
-0.5, -0.33, 1.5, 0.06, 0.67, 1.35, -1.57, 1.97, 0.41, 0.13,
1.76, -0.52, -0.1, 0.37, -0.64, -1.43, -0.19, -0.81, -1.24, 0.7,
0.55, -0.31, -1.69, 0.97, 1.12, 0.14, -0.51, 1.17, -0.34)

h <- hist(x, plot = FALSE)
nc <- with(h, sum(counts>1e-7))
cols <- rep("black", length(h$counts))
cols[h$counts>1e-7] <- rainbow(nc)
plot(h, col = cols)
#différent de
plot(h, col = rainbow(nc))
# différent de
plot(h, col = rainbow(length(h$counts)))
Cordialement,
Maxime

Christophe Genolini
Messages : 698
Enregistré le : 12 Juin 2006, 21:37
Contact :

Re: rainbow : Calculer le nombre de couleur automatiquement

Messagepar Christophe Genolini » 03 Avr 2017, 14:45

Super, merci beaucoup !
--
Christophe
https://rplusplus.com


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité