- Le blog participatif de bioinformatique francophone depuis 2012 -

Créer sa carte géographique avec R

Aujourd’hui je vais vous mon­trer com­ment, en uti­li­sant R, on peut faire de belles cartes géo­gra­phiques.

Et là, vous allez me deman­der, mais pour­quoi faire des cartes géo­gra­phique ? Et pour­quoi avec R ?

Et bien ima­gi­nons que, vous, bio­in­for­ma­ti­cien de ter­rain, soyez allé échan­tillon­ner des ani­maux à l’autre bout du monde sur plu­sieurs sites, par exemple des Mar­su­pi­la­mi (tota­le­ment au hasard !). Vous vou­lez faire une carte de ces dif­fé­rents sites d’échantillonnage.

Facile ! Il suf­fit d’utiliser Google Earth, et d’y ajou­ter les points me direz-vous.

Oui, mais voi­là, vous avez 500 points d’échantillonnage. Et 500, ça com­mence à faire beau­coup à faire à la main… Et puis votre chef étant un aya­tol­lah du libre, vous venez d’être viré par le simple fait d’y avoir pen­sé !

Et le gros avan­tage d’utiliser R sera de pou­voir uti­li­ser toutes ses fonc­tions gra­phiques sur votre carte (et puis c'est libre !). Nous ver­rons, à la fin de cet article, com­ment ajou­ter des gra­phiques sur une carte.

Pour faire une simple carte, on va uti­li­ser les packages maps[1] et mapdata[2]. Une fois ins­tal­lés, nous uti­li­se­rons la fonc­tion 

  pour créer notre carte. Nous uti­li­se­rons les don­nées de la base de don­nées world­Hires four­nie dans le package map­da­ta.

Le code sui­vant donne une carte du monde.

map('worldHires')

carte_monde

Les options gra­phiques de R peuvent s’appliquer. On peut choi­sir de ne des­si­ner qu'une par­tie du monde en uti­li­sant les options xlim et ylim res­pec­ti­ve­ment pour régler la lon­gi­tude et la lati­tude. Il faut donc connaître les coor­don­nées géo­gra­phique des quatre coins de la carte qui nous inté­resse (elles peuvent être trou­vées grâce à la fonc­tion

  de R). L’option color per­met­tra de modi­fier la cou­leur des fron­tières entre pays, et uti­li­sée avec l’option fill, on pour­ra colo­rier les pays.

carte_afrique

Ouais, mais c’est chiant ton truc. Il faut connaître les coor­don­nées géo­gra­phiques dans le sys­tème déci­mal pour des­si­ner la carte. On peut pas deman­der le pays que l’on veut ?

Et si ! On peut spé­ci­fier le pays que l’on veut des­si­ner. Par exemple, la com­mande sui­vante per­met de des­si­ner une carte du Japon avec un fond gri­sé.

carte_japon

Puisqu’une carte sans échelle ne veut rien dire (com­ment j’ai bien rete­nu mes cours de géo­gra­phie du col­lège !), on uti­li­se­ra la fonc­tion 

  pour l’ajouter.

On peut ensuite ajou­ter les villes sur cette carte, grâce à la fonc­tion

.

On pour­ra ensuite ajou­ter des points sur la carte à par­tir des coor­don­nées géo­gra­phiques. Il fau­dra alors dis­po­ser de ces coor­don­nées géo­gra­phiques dans le sys­tème déci­mal. Si vous avez les coor­don­nées dans le sys­tème sexa­gé­si­mal, vous pou­vez les conver­tir, par exemple sur ce site : https://​tools​.wmflabs​.org/​g​e​o​h​a​ck/

Les coor­don­nées de Kyo­to dans le sys­tème sexa­gé­si­mal sont 35°40’14.6“N, 139°46’18.86“E (mer­ci Wiki­pe­dia : https://​fr​.wiki​pe​dia​.org/​w​i​k​i​/​k​y​oto). Ces coor­don­nées donnent dans le sys­tème déci­mal : 35.670724°N pour la lati­tude et 139.771907°E pour la lon­gi­tude.

carte_japon_avec_ville

Je vois d'ici les petits malins qui ont vou­lu, pour tes­ter, faire une belle carte de la France métro­po­li­taine, et qui n'ont pas été super contents du résul­tat…

En effet la com­mande

  repré­sente la France… en entier ! Donc avec les DOM-TOM (enfin les DROM-COM pour ceux qui ont sui­vi les chan­ge­ments d'acronymes).

Il fau­dra donc, dans le cas de la France métro­po­li­tane, pas­ser obli­ga­toi­re­ment par les coor­don­nées géo­gra­phiques :

Main­te­nant reve­nons à nos mar­su­pi­la­mis. On va réa­li­ser une carte de leur aire de répar­ti­tion sur laquelle on ajou­te­ra les points d’échantillonnage. Pour les aires de répar­ti­tion d’une espèce, il est "assez facile" de trou­ver des don­nées sur inter­net sous forme de sha­pe­file (.shp) qui sont ceux que l’on uti­lise pour faire une carte.

On repré­sente les aires de répar­ti­tion de deux types de popu­la­tion de la même espèce de mar­su­pi­la­mi (Mar­su­pi­la­mi fan­ta­sii) : les mar­su­pi­la­mis jaunes à tâches (dont l'aire de répar­ti­tion est repré­sen­tée en vert) et les mar­su­pi­la­mis jaunes uni­formes (en rouge). Sur la carte, on voit que les deux popu­la­tions coha­bitent sur une aire géo­gra­phique limi­tée.

carte_repart_marsu

Pour faire cette carte, j’ai impor­té une nou­velle libraire (map­tools) dans laquelle se trouve la fonc­tion

 qui per­met d’ouvrir des fichiers « de forme ». J’ai récu­pé­ré le fichier concer­nant les "cae­ci­lian amphibians"[3] (mais ! On bos­sait pas sur le mar­su­pi­la­mi ?!) sur le site de l’UICN Red List (Liste rouge des espèces en danger)[4]. Une fois ouvert avec R, vous devriez obte­nir une data frame conte­nant une aire de répar­ti­tion par ligne (et j'ai bien galé­ré à en trou­ver deux qui se recoupent).

Une légende pour­rait être ajou­tée en uti­li­sant la fonc­tion

 de R.

Main­te­nant inté­res­sons-nous en par­ti­cu­lier à la zone où les deux popu­la­tions coha­bitent. Sur cette carte, j’ai ajou­té les treize points d’échantillonnage dans cette région (dont sept dans la zone de coha­bi­ta­tion). On peut ajou­ter ces points grâce à la fonc­tion 

  en ayant au préa­lable impor­té le fichier csv qui les contient.

Pour zoo­mer, j’ai cher­ché les coor­don­nées des quatre points les plus, res­pec­ti­ve­ment, au nord, à l’ouest, au sud et à l’est de la zone qui m’intéresse grâce à la fonc­tion 

  de R.

points_echant

C’est bien beau d’échantillonner des bes­tioles sur le ter­rain, mais nor­ma­le­ment, on n'échantillonne pas pour le plai­sir d'échantillonner, mais pour faire quelque chose avec cet échan­tillon­nage… On a donc séquen­cé le cyto­chrome b des dif­fé­rents indi­vi­dus échan­tillon­nés dans ces dif­fé­rentes popu­la­tions, ce qui nous a per­mis d’identifier huit haplo­types dif­fé­rents.

 Hey m4rsu ! On pour­rait pas faire une repré­sen­ta­tion des dif­fé­rents haplo­types iden­ti­fiés sur chaque site et leur fré­quence, genre avec un camem­bert ?

J'allais jus­te­ment y venir !

On peut donc ajou­ter des gra­phiques en camem­bert sur une carte grâce à la fonc­tion 

 qui est four­nie avec la libra­rie map­plots. Il faut dis­po­ser d’un fichier qui com­porte quatre colonnes : lon­gi­tude, lati­tude, haplo­type, nombre d’observations. On pour­ra alors uti­li­ser la fonc­tion 

 qui créée auto­ma­ti­que­ment un objet uti­li­sable dans la fonc­tion

.

haplotype

Tadaa ! Bon, je vous laisse faire l’interprétation (bon cou­rage, j'ai inven­té les don­nées !), car ce n’est pas l’objet de cet article.

Nous avons donc vu com­ment faire des cartes avec R. N’étant pas un spé­cia­liste, je vous ai mon­tré quelques pos­si­bi­li­tés, mais il y en a plein d’autres, et je suis sûr que l’on peut faire des cartes bien plus belles que celles que j’ai mon­trées ici. Il existe plein d'autres librai­ries pour faire des cartes, vous devriez y trou­ver votre bon­heur !

Pour finir, je vou­drais pré­ci­ser qu’aucun mar­su­pi­la­mi n’a été mal­trai­té pour écrire cet article. En plus, c'est un gros fake : tout le monde sait que les mar­su­pi­la­mis vivent dans la forêt palom­bienne et non ama­zo­nienne.

Mer­ci à mathu­rin, hed­jour, Oli­vier Dame­ron et Syl­vain P. pour leurs pré­cieux conseils et la relec­ture de cet article. Mer­ci éga­le­ment à Kim Gil­bert pour son article "Making maps with R"[5] qui m'a bien aidé à mes débuts avec les cartes.

Réfé­rences

[1] Package maps : http://cran.r‑project.org/web/packages/maps/

[2] Package map­da­ta : http://cran.r‑project.org/web/packages/mapdata/index.html

[3] : sha­pe­file des Cae­ci­lian Amphi­bians (ou Gym­no­pho­nia) : http://​goo​.gl/​O​F​G​Yl1

[4] : IUCN Red List http://​www​.iucn​red​list​.org/​t​e​c​h​n​i​c​a​l​-​d​o​c​u​m​e​n​t​s​/​s​p​a​t​i​a​l​-​d​ata

[5] : Making map with R : http://www.molecularecologist.com/2012/09/making-maps-with‑r/



Pour continuer la lecture :


Commentaires

14 réponses à “Créer sa carte géographique avec R”

  1. Avatar de Billy Mandresy
    Billy Mandresy

    Super!!! Tout sim­ple­ment super ! Mer­ci du par­tage.

  2. Bon­soir, svp je vou­drais construire des graphe à par­tir des don­nées de Genre pro­duc­tion ceria­lire dans le monde avec R ms je sais pas com­ment faire
    pour­riez vous m'aidez c urgent
    mer­ci
    lien http://​don​nees​.ban​que​mon​diale​.org/​i​n​d​i​c​a​t​e​u​r​/​A​G​.​Y​L​D​.​C​R​E​L​.KG
    je prends que 8 pays de 2000 à 2013

  3. Mer­ci !

  4. Avatar de Pierre Raymond
    Pierre Raymond

    Bon­soir Mr.
    J'ai bien appré­cié votre article. Vous êtes un très bon péda­gogue.
    Cepen­dant, vous n'avez pas abor­dé mon sou­ci.
    Je vous l'expose dans l'espoir d'une suite favo­rable.
    En effet, pou­vez vous faire la carte du mar­ché com­mun COMESA c'est ‑à-dire ma mise en com­mun des cartes des pays qui com­posent COMESA ?
    Prière m'indiquer toutes les étapes, les packages et les codes R.
    Mer­ci
    Pierre

  5. Hedjour

    Vous vou­lez aus­si que l'on vous écrive tout le code ?
    Pour ça il vous faut le for­mu­laire A39…
    Pour des réponses spé­ci­fique en fran­çais sur R c'est par ici (clic)

  6. Bon­jour,

    Pour créer faci­le­ment une carte, j'utilise cet outil de data-viz : https://​makeyour​map​.cc/​fr/

    Il est tota­le­ment gra­tuit et en 5 clics il est facile de réa­li­ser une carte avec ses propres don­nées excel ou avec des don­nées en open-source.

    Je vous le recom­mande si vous ne sou­hai­tez pas perdre de temps avec des outils com­pli­qués !

  7. Avatar de !!:;;:; ç_èè-((''"
    !!:;;:; ç_èè-((''"

    Bon­jour

    j'ai appré­cié votre ensei­gne­ment. Mais je vou­lais savoir com­ment des­si­ner la carte du BURUNDI.

    1. Il suf­fit d'utiliser cette com­mande :
      map('worldHires', "burun­di", col='gray80', fill=T)

      Le nom des pays doivent être ren­sei­gner en anglais et en minus­cule pour que ça fonc­tionne.

  8. Bon­jour à vous
    Mer­ci pour cet ensei­gne­ment.
    Je vou­drais savoir com­ment faire la carte de pays com­po­sés de plu­sieurs noms comme cote d'ivoire, Sao tome, Sier­ra Leone, Etat unis, Afrique de l’ouest, Afrique cen­trale, etc. Ensuite, com­ment asso­cier des cou­leurs en fonc­tion de cer­taines valeur tels que (5–10 : rouge ; 10–15 : jaune ; 15 — 20 vert ; etc.)
    Mer­ci d'avance. J’ai appré­cié votre ensei­gne­ment.

    1. La com­mande pour des­si­ner les pays à noms com­po­sés est la même :
      map('worldHires', "sier­ra leone", col='gray80', fill=T)

      Les noms des pays doivent être écrit en anglais et dans les majus­cules pour que ça fonc­tionne.

      Pour les cou­leurs, je n'ai pas la réponse, mais cela doit suivre les règles clas­siques de colo­ra­tion avec R.

  9. Bon­jour, vous par­lez des packages map, mais je ne sais pas com­ment les récu­pé­rer ? Mer­ci à vous

    1. Les librai­ries sont sur CRAN, il faut donc les ins­tal­ler dans R avec la com­mande sui­vante :
      install.packages("maps")

  10. Avatar de RANKOUSSI
    RANKOUSSI

    Bon­jour,
    Super article !
    Je vous expose mon pro­blème. Je sou­haite colo­rer des poly­gones ( des régions). Je me demande si je dois impor­ter des shp ou bien si on peut faire autre­ment…

  11. Avatar de Axelle

    Bon­jour,

    J'aimerais savoir s'il est pos­sible sur R de sépa­rer des pie charts qui se super­posent ? En effet, pour une même posi­tion, j'ai plu­sieurs don­nées dif­fé­rentes et donc plu­sieurs pie charts du coup, j'aimerais les espa­cer légè­re­ment pour que ma carte soit plus lisible (via des tirets par exemple). Je ne sais pas si je suis très claire. Je n'ai pas la pos­si­bi­li­té de joindre une image pour illus­trer ma demande.

    Mer­ci de votre retour,
    Axelle

Laisser un commentaire