Fonction "par" couleur par variété

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

margot julien
Messages : 46
Enregistré le : 28 Nov 2017, 12:10

Fonction "par" couleur par variété

Messagepar margot julien » 09 Juil 2019, 12:18

Bonjour,

je fais un graphique avec le code ci-dessous pour représenter la moyenne du rendement en fonction de ma date de récolte.

Code : Tout sélectionner

attach(fi)

palette(rainbow(5))
par(mfrow=c(1,2),las=1)
stripchart(rendement~date_recolte, vertical=T, pch=21, cex = 1.5, xlab="date_recolte", ylab="rendement",
           main="evolution du rendement en fonction de la date de recolte",
           sub="(toutes les variétés, années et tous traitements engrais et herbicides confondus)",
           col.main="red", col.lab="blue", col.sub="black",
           col = fi$var)               

legend(x = "topleft", legend = levels(fi$var), col =rainbow(5),
       pch = 21, cex = 1) ########## ici la légende se met bien mais je n'ai pas une couleur par variété

detach(fi) 


J'ai plusieurs questions:
-la fonction représente bien tous les points? c à d toutes les données sans rien moyenner?
- avec la fonction j'arrive à mettre une légende avec une couleur par variété sauf que les couleurs n'apparaissent pas sur le graphique, comme cela se fait-il? (tout est rouge pour les 2 variétés)
- en plus d'une couleur par variété, y a t-il possibilité de mettre un symbole différent pour les différents engrais et une taille de point différente pour les différents herbicide?


J'ai aussi essayé d'utiliser la fonction "plot" et j'ai le même souci pour la couleur des variétés:

Code : Tout sélectionner

palette(rainbow(5))

plot(fi$date_recolte, fi$rendement, pch = 21, cex = 1.5, main = "......",
     xlab = "Date_recolte ", ylab = "Rendement",
     col = fi$var)

legend(x = "topleft", legend = levels(fi$var), col = rainbow(5),
       pch = 21, cex = 1)


Voici le fichier ci-dessous.
Par avance, merci.
Salutations.

var annee date_recolte engrais herbicide rendement
var1 an1 d1 engrais1 oui 85
var1 an1 d1 engrais1 non 23
var1 an1 d1 engrais2 oui 68
var1 an1 d1 engrais2 non 71
var1 an1 d1 engrais3 oui 21
var1 an1 d1 engrais3 non 48
var1 an1 d2 engrais1 oui 11
var1 an1 d2 engrais1 non 52
var1 an1 d2 engrais2 oui 61
var1 an1 d2 engrais2 non 35
var1 an1 d2 engrais3 oui 78
var1 an1 d2 engrais3 non 51
var1 an2 d1 engrais1 oui 72
var1 an2 d1 engrais1 non 66
var1 an2 d1 engrais2 oui 25
var1 an2 d1 engrais2 non 13
var1 an2 d1 engrais3 oui 20
var1 an2 d1 engrais3 non 83
var1 an2 d2 engrais1 oui 80
var1 an2 d2 engrais1 non 87
var1 an2 d2 engrais2 oui 79
var1 an2 d2 engrais2 non 22
var1 an2 d2 engrais3 oui 87
var1 an2 d2 engrais3 non 51
var2 an1 d1 engrais1 oui 12
var2 an1 d1 engrais1 non 67
var2 an1 d1 engrais2 oui 76
var2 an1 d1 engrais2 non 38
var2 an1 d1 engrais3 oui 46
var2 an1 d1 engrais3 non 77
var2 an1 d2 engrais1 oui 40
var2 an1 d2 engrais1 non 77
var2 an1 d2 engrais2 oui 75
var2 an1 d2 engrais2 non 70
var2 an1 d2 engrais3 oui 10
var2 an1 d2 engrais3 non 46
var2 an2 d1 engrais1 oui 60
var2 an2 d1 engrais1 non 79
var2 an2 d1 engrais2 oui 81
var2 an2 d1 engrais2 non 43
var2 an2 d1 engrais3 oui 51
var2 an2 d1 engrais3 non 47
var2 an2 d2 engrais1 oui 75
var2 an2 d2 engrais1 non 15
var2 an2 d2 engrais2 oui 53
var2 an2 d2 engrais2 non 78
var2 an2 d2 engrais3 oui 65
var2 an2 d2 engrais3 non 41

Facundo Muñoz
Messages : 156
Enregistré le : 04 Juil 2019, 09:58
Contact :

Re: Fonction "par" couleur par variété

Messagepar Facundo Muñoz » 09 Juil 2019, 13:03

En regardant le code de la fonction stripchart() il semble que seulement admet des couleurs par groupe (et non par point).

Voici une alternative :

Code : Tout sélectionner

dotchart(rendement, groups = date_recolte, pch = 20, col = fi$var)
ƒacu.-

margot julien
Messages : 46
Enregistré le : 28 Nov 2017, 12:10

Re: Fonction "par" couleur par variété

Messagepar margot julien » 09 Juil 2019, 13:29

Cela fonctionne pour avoir une couleur par variété, merci. Par contre quand je veux mettre la légende comme ci-dessous, ma légende est fausse (j'ai 2 fois la même couleur pour var 1 et var 2), qu'est ce que j'ai fait de faux dans le code?

Code : Tout sélectionner

dotchart(rendement, groups = date_recolte, pch = 20, col = fi$var)
legend(x = "topleft", legend = levels(fi$var), col = fi$var,
       pch = 21, cex = 1)


Est-il possible de mettre le rendement en ordonnée et la date de récolte en abscisse avec la fonction dotchart?

Facundo Muñoz
Messages : 156
Enregistré le : 04 Juil 2019, 09:58
Contact :

Re: Fonction "par" couleur par variété

Messagepar Facundo Muñoz » 09 Juil 2019, 14:15

Code : Tout sélectionner

col = 1:2
ƒacu.-

margot julien
Messages : 46
Enregistré le : 28 Nov 2017, 12:10

Re: Fonction "par" couleur par variété

Messagepar margot julien » 10 Juil 2019, 08:25

Parfait cela fonctionne, merci
Est-il possible de mettre le rendement en ordonnée et la date de récolte en abscisse avec la fonction dotchart?

margot julien
Messages : 46
Enregistré le : 28 Nov 2017, 12:10

Re: Fonction "par" couleur par variété

Messagepar margot julien » 11 Juil 2019, 07:34

Bonjour,

avec "plot" j'arrive à avoir une couleur par variété sur le graphique en mettant les x en numérique.
Du coup j'aimerais trouver une solution pour remettre mes labels en texte sur l'axe des x, avez-vous une idée? par exemple pour x = 1 voir écrit "date1" et pour x=2 voir écrit "date2"

Code : Tout sélectionner

fi<-read.csv2("plot-test.csv", na.strings = "NA",header = TRUE)

str(fi)
head(fi)
dim(fi)

#fi<-subset(fi, select = c(var, date_recolte,rendement))
fi <- transform(fi,
                    engrais = as.factor(engrais),
                    rendement = as.numeric(rendement), date_recolte= as.numeric(date_recolte))

attach(fi)
palette(rainbow(2))
plot(fi$date_recolte, fi$rendement, pch = 21, cex = 1.5, main = "rendement",
     xlab = "date", ylab = "rdt",
     xlim = c(0, 3), ylim = c(0, 100), col = fi$var)
legend(x = "topleft", legend = levels(fi$var), col = rainbow(2),
       pch = 21, cex = 1)
detach(fi)


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité