IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Comment changer l'échelle des couleur de la légende d'une carte ggplot2 R


Sujet :

R

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 40
    Points : 32
    Points
    32
    Par défaut Comment changer l'échelle des couleur de la légende d'une carte ggplot2 R
    Bonjour,

    Je veux exposer mon problème, afin de me donner quelques voies à suivre
    Mon but est d'afficher une carte avec mon raster (https://depots.univ-perp.fr/get?k=idP9Acej0lZ10sa2FWe), à partir de ce programme:


    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
    library(raster) ; library(rgdal) ; library(sp);library(rgeos);library(ggplot2)
     
    # importer raster
     
    alti=raster("raster.tif")
     
    #   Convert rasters TO dataframes for plotting with ggplot
    hdf <- rasterToPoints(alti)
     
    hdf <- data.frame(hdf)
     
    colnames(hdf) <- c("Long","Lat","Altitude")
     
     
    #   Plot layer with ggplot()
     
    ggplot()+
      layer(geom="raster",data=hdf,mapping=aes(Long,Lat,fill=Altitude))+
          # draw boundaries
      geom_path(color="black", linestyle=0.2)+
     
      # legend 
     
      scale_fill_gradientn(name="A",colours=c("red","blue","green","grey","yellow","orange","black"), breaks=c(0,100,200,500,2000,4000,5000))

    à la fin , je ne peux pas ajuster les couleurs de ma légende avec des gammes de valeurs proposées.

    je veux avoir ceci:

    "red" --> [0-100]
    "blue" --> [100-200]
    "green"--> [200-500]
    "grey"-->[500-2000]
    "yellow" --> [2000-4000]
    "black"--> > 5000.


    Merci d'avance pour votre aide
    Cordialement

  2. #2
    Membre actif
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Octobre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 126
    Points : 296
    Points
    296
    Par défaut
    Bonjour,
    Avec ggplot2, on ne manipule pas directement les éléments de la légende. Son apparence dépend de comment on a défini l'échelle (scale) et l'apparence des données. C'est la même chose avec les axes. Dans la terminologie de ggplot2, axes et légendes sont appelées guides. Comment s'y prendre ?
    • l'argument name donné à la famille des méthodes scale* déterminera les étiquettes des axes et les titres des légendes ;
    • les arguments breaks et labels aux mêmes méthodes scale* contrôlent les graduations des axes (ticks) et des légendes (keys) ;
    • les arguments axis.* et legend.* à la famille des méthodes theme donnent leur apparence aux axes et aux légendes ;
    • de multiples autres paramètres relatifs notamment au positionnement des axes et des légendes sont expliqués à la page d'aide de theme, help("theme").


    Pour revenir à votre question, essayer avec l'argument limits de la méthode scale_fill_gradientn.
    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
    invisible(sapply(
        ##"sp" est une dépendance de "raster", ce n'est pas la peine de l'attacher explicitement
        c("raster", "rgdal", "rgeos", "ggplot2"),
        function(x) library(x, character.only = TRUE)
    ))
     
    alti <- raster("raster.tif")
    hdf <- rasterToPoints(alti)
    colnames(hdf) <- c("Long","Lat","Altitude")
    hdf <- as.data.frame(hdf)
     
    ggplot() +
        layer(geom = "raster",
              data = hdf,
              mapping = aes(Long, Lat, fill = Altitude)
        ) +
        geom_path(color = "black", linestyle = 0.2) +
        scale_fill_gradientn(
            name = "A",
            colours = c("red", "blue", "green", "grey", "yellow", "orange", "black"),
            limits = c(0, 5000)
        )
    La légende ressemblera à ceci : Nom : legend.png
Affichages : 1658
Taille : 2,9 Ko
    Si cela ne convient pas, alors penser à définir manuellement l'apparence de la légende avec la méthode scale_colour_manual.

Discussions similaires

  1. [JTable]Comment changer le nom des colonnes
    Par Core8 dans le forum Composants
    Réponses: 8
    Dernier message: 28/10/2009, 01h13
  2. Réponses: 8
    Dernier message: 04/04/2007, 11h16
  3. [Administration] Comment changer les passwords des utilisateurs ?
    Par killerfrog dans le forum CVS
    Réponses: 4
    Dernier message: 20/03/2007, 18h56
  4. Réponses: 4
    Dernier message: 14/10/2005, 14h02
  5. Comment changer le répertoire des fichiers temporaires ?
    Par devdev dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 01/09/2004, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo