Rose des vents, histogramme circulaire, polar plot, rose diagram … a vous de choisir ! Objectif : Nous disposons d’une multitude de sépultures (enfin un shapefile..) pour lesquelles nous avons extrait l’orientation (soit sur le terrain ou dans QGIS grâce a cette méthode http://wp.me/p29w2o-5B ou encore celle là http://wp.me/p29w2o-a4) et nous voulons représenter toutes les orientations sur un même histogramme circulaire. 1 – R c’est quoi ? C’est un logiciel libre de traitement de données et d’analyse statistique. Tout est dit ! C’est le logiciel indispensable pour tout traitement statistique qui comme QGIS détient toute sa puissance (n’ayons pas peur des mots) de sa communauté d’utilisateurs et des nombreuses bibliothèques (library, l’équivalent des extensions dans QGIS). Pour en savoir plus, consultez: – la page du projet (en anglais) => http://www.r-project.org/ – l’excellent « R pour les statophobes » de denis Poinsot (tant que vous y êtes n’oubliez pas « Statistiques pour les Statophobes » du même auteur et des ses acolytes Giuseppe Parsimoni et Tigran Abonessian 😉 ) Bon, on y va :
- Téléchargez le logiciel R ici => http://cran.r-project.org/bin/windows/base/
- Installez le / Ouvrez le
- Choisissez un site miroir CRAN (un dépôt de bibliothèques pour R), Menu Packages > Choisir le site miroir de CRAN.. (France (Lyon1) par exemple)
- Installer le Package « Plotrix », Menu Packages > Installer le(s) packages(s)..>sélectionnez Plotrix>[OK]
- Dans la fenêtre qui vous fait peur (si si avouez-le, c’est pas grave) tapez après le >
library(« plotrix »)
– Fermez le logiciel R (n’enregistrez pas la session) 2- Paramétrer la boîte à outils de traitement de QGIS – Ouvrez QGIS (bah oui quand même..) – Pour pouvoir exécuter des scripts R dans la boîte à outils de traitement il faudra la paramétrer dans QGIS . Pas de panique, rien de très difficile, tout se passe dans le Menu Traitement (Processing) > Options > Prestataires de services > Rscripts 1) On coche Activate
2) On définit le répertoire contenant les dossiers (bin, doc,…) du logiciel R du genre « C:/Programmes Files/R/R-3.1.1 » (Un copier coller depuis la barre d’adresse de l’explorateur devrait suffire) Note: Il est parait-t’il préférable de mettre le chemin au format MSDOS comme sur l’illustration C:/PROGRA~1/R/R-3.1.1 3) Le répertoire ou seront stockés les scripts est définit par défaut dans « .qgis2\processing\rscripts » et c’est très bien comme cela… – Sélectionnez le répertoire et copier l’adresse dans l’explorateur. Vous pouvez y coller le script (après l’avoir décompressé) téléchargeable ici => Rose des Vents.zip
3) Fermez QGIS – Ouvrez QGIS – Faites 100m à cloche-pied et revenez devant votre ordinateur 😉
4- C’est parti ! – Chargez votre shapefile dont la table attributaire comporte un champ (Numérique) qui contient les orientations en degrés de chaque sépulture. Par exemple : – Menu Traitement > Toolbox
Note: Si nécessaire, en bas de la fenêtre « boîte de traitement » sélectionnez « Advanced interface » au lieu de « Simplified interface » – Développez l’arborescence : Rscripts > @rcheomatic > Rose Des vents (double-clic) Une fenêtre de dialogue s’ouvre :
Dans Layer je choisis mon shapefile sus-cité Dans Orientation je choisis mon champ numérique contenant des valeurs de 0 à 359 Et avec le bouton […] je choisis où enregistrer ma rose des vents (un fichier html et une image en png). Pas obligatoire, à défaut il enregistrera un fichier temporaire. Enfin cliquez sur le bouton [Run] Bon bah c’est tout… et puis si vous n’êtes pas sûr, vous pouvez toujours lire l’onglet [Aide]

Histogramme circulaire représentant les orientations des sépultures: La grande majorité des sépultures sont orientées Est-Ouest (entre 80 et 100°) avec un maximum de 35 sépultures à 90°.
4- Changer les paramètres ? Vous êtes exaltés au plus haut point du résultat, non ? en même temps vous préféreriez les segments en rose ou mettre les points cardinaux plutôt que les degrés…. Eh bah allez-y ! Vous l’avez bien compris, c’est mon premier script R et si je lai fait c’est bien que ce n’est pas trop difficile, notamment avec la communauté gigantesque qui s’intéresse a ce logiciel, parfois même en français 😉
Mes sources :
Page du package plotrix, fonction polar.plot => http://www.inside-r.org/packages/cran/plotrix/docs/polar.plot
Discussion sur les différentes facon de faire une rose des vents avec R => http://stackoverflow.com/questions/13944133/circular-plot-with-vectors-in-r
Discussion sur ForumSIG : créer un histogramme circulaire =>http://www.forumsig.org/showthread.php/37838-R-Cr%C3%A9er-un-histogramme-circulaire
Pour l’utilisation de R dans Qgis, il y a la documentation QGIS, l’article d’Etienne DELAY sur Geotribu ou encore le tuto (PDF) de Cyril Bernard
Pour changer le code il suffit de faire un clic-droit sur le script > Editer script A savoir : Un # permet de commenter le code Les deux ## permettent de paramétrer le script Le bouton [engrenage] lance le script
Le code avec les commentaires pour le paramétrage:
# Donne un nom au sous-dossier qui doit contenir mon script ##@rcheomatic=group # En sortie ce sera un graphique ##showplots # Affiche Layer et demande en entree sera une couche vecteur ##Layer=vector # Affiche Orientation et demande en entree un champ (numerique) de la couche ##Orientation=Field Layer # Appel du package "plotrix"..verifier qu'il est bien installe dans R library("plotrix") # Declaration de la variable orient = champ Orientation orient # Declaration de la variable recap = recapitulation du champ Orientation # cad nombre d occurences pour chaque valeur unique d'orientation recap # creation du diagramme diag # longueur des segments = nombres de sepultures ayant la meme orientation c(0,recap$x), # angle des segments c(0,recap$Group.1), # Titre main="histogramme circulaire \nd'orientations", # Origine (placement du 0) si 0 il sera a droite, si 90 en haut, si 180 a gauche start=90, # Sens horaire clockwise=TRUE, # Epaisseur des segments lwd=1, # Couleur des segments line.col="black", # emplacement des etiquettes sur les cercles concentriques (nombre de sepultures) # si 0 y en a pas, si 1 en bas, si 2 a gauche, etc show.grid.label=3, # affichage des cercles concentriques (TRUE/FALSE) show.radial.grid=TRUE, # etiquettes a l exterieur du diagramme # par defaut (on efface le parametre) en degre de 20 en 20 # ex: seq(0,350,by=10) veut dire de 0 à 350 avec un pas de 10 # ex: pour les points cardinaux on peux ecrire labels=c labels=seq(0,350,by=10), # emplacement des etiquettes a l'exterieur du diagramme (a faire concorder avec labels) # (ex: de 0 a 315 avec un pas de 45 = (0,315,by=45) # si on a choisi les points cardinaux comme dans le commentaire precedent label.pos=seq(0,350,by=10)) # Derniere remarque ne pas mettre un seul accent meme dans les commentaires
EN CADEAU une version « paramétrable » (couleur et épaisseur des segments, titre, graduations) du script ICI => RoseDVentsParamet.zip, pas mal non ?
Attention: Si vous avez un message d’erreur du style « wrong value for parameter « MSYS » / Specified path does not exist ». Je vous propose de tenter la manip suivante:
- aller dans le répertoire C:\Program Files\QGIS 2.18\apps et créer 2 dossiers vides un nommé « msys » et l’autre « grass-7.2.1«
- Paramétrer le répertoire R (Traitement > Options > choisir le vrai chemin vers votre version récente de R genre C:\Program Files\R\R-3.4.3)
- Cocher utiliser la version 64bits selon votre version de R
- Et là tout devrait fonctionner… peut être après un redémarrage quand même !
Merci, merci, merci, merci !
J’ai pas réussi une étape : faire les 100m à cloche-pied !
Bravo SLY, j’apprends tous les jours grâce à Archéomatic,
Continue …
Véro topo
Rho c’est beau ça !!! Chouette…
merci ! je tente la chose sur mon parcellaire du 18e s. J’obtiendrais peut-être un résultat sur l’adaptation des sociétés à la pente/vulnérabilité du terrain.
bonjour (et merci pour tout ce qui est proposé) !
cette fonctionnalité me paraît très intéressante, mais j’ai manifestement raté quelque chose dans le pas-à-pas puisque je termine avec un carré bleu avec point d’interrogation dans la fenêtre des résultats. J’ai l’impression que c’est un problème d’affichage.. Est-ce que d’autres de vos lecteurs auraient déjà rencontré ce problème ?
Bonsoir,
Je viens de tenter ce tutoriel et j’ai le même soucis que Sophie … Je suis preneur d’un conseil !
J’ai regardé le fichier html produit et il fait référence à une image qui n’est pas créée (d’où le « ? » à la place du graphe) et je ne comprends pas pourquoi l’image du graphe n’est pas générée. Je me suis posé la question du format de la donnée (j’avais laissé mon angle en entier pour mon test), mais j’ai refait le test avec un angle en réel, mais j’ai le même résultat.
En attendant, merci, pour ce blog et toutes ces infos extrêmement intéressantes !
Manuel
Bonjour,
Merci beaucoup pour la qualité de ce tuto (et de ce blog).
J’ai eu le même problème que Sophie et Manuel. En installant les paquets ‘rgdal’ et ‘raster’ de R, le résultat a été bien plus concluant :
> install.packages(« rgdal »)
> install.packages(« raster »)
Sylvain F.
Merci pour l’info Sylvain,
pour rgdal je comprends puisque c’est le package de gdal mais pour raster je ne vois pas pourquoi? Si ça marche c’est l’essentiel!
bonjour !
Merci pour cette piste, je tenterai cela un de ces 4 et ferai un retour !
Manuel
Salut,
n’hésite pas à faire un retour de ton expérience.. et promis je m’y remet un jour avec un meilleur rendu de ce genre: http://stackoverflow.com/questions/38659150/polar-bar-plot-with-inner-most-circle-empty-using-r
A bientôt donc!
Bonjour ,
J’ai finalement réussi à obtenir le graphe en procédant de la façon suivante :
1/ dans RStudio : installation ( install.package(« xxx ») ) et chargement ( library(« xxx ») ) des packages rgdal, raster, sp et Rcpp
2/ après avoir fermé RStudio, ouverture du script déposé dans le répertoire .qgis2\processing\rscripts (dans C:/utilisateur/blablabla/ sous windows) et ajout du chargement des librairies :
library(« rgdal »)
library(« sp »)
library(« Rcpp »)
NB : j’avais intialement chargé « raster » mais cela générait une erreur donc je l’ai retiré (puisque d’apres ton commentaire, il semble que « raster » ne soit pas nécessaire).
3/ Lancement de QGIS puis réalisation du test
4/ Bingo !
En tout cas merci pour vos réponses et vos commentaires, je suis content d’avoir réussi à faire marcher le truc … c’est dommage que je n’ai pas pensé à regarder du côté des librairies absentes (j’y penserai à l’avenir).
Petite question subsidiaire, lorsqu’on execute le script, il y a des logs dans l’onglet « journal » et qu’on ne peut voir si on ferme la fenetre d’execution (mais si on ferme la fenetre d’execution, tout se ferme et le journal également)… Donc, est-ce que vous savez si il y a moyen de consulter ce journal d’execution ?
Manuel
Bonsoir, merci pour ce tutoriel !
Au lancement de la fonctionnalité, QGIS 2.18.9, le message « cannot concatenate ‘str’ and ‘NoneType’ objects » apparaît. Une solution ?
Somme toute maintenant l’extension « Line Direction Histogram » remplace cette possibilité ?
Merci par avance,
There is a QGIS plugin that generates rose diagrams for line directions of line and polygon layers:
http://arken.nmbu.no/~havatv/gis/qgisplugins/LineDirectionHistogram/