Bonjour,
Le but du script est de faire des catégories de lieux avec un maximum de vraisemblance suivant des critères climatiques et agronomiques.
Une ACP sous FactoMinerR permet de faire ces classes (par exemple lieu 1 et lieu 2 seront dans la même classe 1, lieu 3,lieu 4 et lieu 5 ensemble dans la classe 2), j'ai en tout 4 classes de lieux. Pour chaque classe, j'en déduis les facteurs limitants (pour la classe 1 ce sera la température, et puis pour la classe 2ce sera la pluie et l'argile dans le sol). La dernière étape est de faire une carte avec des points placés sur les bonnes coordonnées GPS (le lieu 1 et lieu 2 dans la classe 1 auront le même rond de couleur bleue indiquant que mon facteur limitant est la température, le lieu 3,4,5 dans la classe 2 auront un rond vert et un rond jaune accolés afin d'en déduire les facteurs limitants pluie et argile). Pour la carto, j'ai utilisé ggplot2 et ggmap. Mon script fonctionne très bien mais j'aimerais le simplifier.
Voici une partie du script :
J'aimerais ne pas prendre une variable une à une, mais avoir une ligne de commande qui me permettrait d'étudier toutes les variables en même temps (sachant que le nombre de variables peut être modifié à tout moment). J'ai essayé de paramétrer dès le départ un vecteur avec toutes mes variables mais sans grande réussite. La condition if me permet de décaler les ronds sur la carte pour ne pas qu'ils se superposent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 library(ggplot2) library(ggmap) ouest=get_map("Switzerland",zoom=5) ##Température Temp=x[1,] => colonne de mon tableau min_Temp=min(Temp) coord_Temp=which(Temp==min_Temp,arr.ind=TRUE) numero_classe=coord_Temp[[1]] numero_classe Temperature=subset(carto,classe==numero_classe) Temperature ##Pluie Pluie=x[2,] min_Pluie=min(Pluie) coord_Pluie=which(Pluie==min_Pluie,arr.ind=TRUE) numero_classe=coord_Pluie[[1]] numero_classe Pluie=subset(carto,classe==numero_classe) Pluie #Décalage ronds if (rownames(Temperature)==rownames(Pluie)) { long=Pluie[,8]+0.3 } else { long=Pluie[,8] } Pluie[,8]=long ##Argile Argile=x[3,] min_Argile=min(Argile) coord_Argile=which(Argile==min_Argile,arr.ind=TRUE) numero_classe=coord_Argile[[1]] numero_classe Argile=subset(carto,classe==numero_classe) Argile #Décalage ronds if (rownames(Temperature)==rownames(Argile)) { long=Argile[,8]+0.3 } else { long=Argile[,8] } Argile[,8]=long if (rownames(Pluie)==rownames(Argile)) { long=Argile[,8]+0.3 } else { long=Argile[,8] } Argile[,8]=long
Toute idée est bonne à prendre, j'espère avoir été claire dans mes explications, merci.
Partager