Comment puis-je créer des tracés raster avec la même échelle de couleurs dans R
Je suis de créer des cartes à partir de fichiers raster à l'aide de la "raster" paquet dans R. j'aimerais créer comparaison des rasters, montrant plusieurs cartes côte à côte. Il est important pour cela que la couleur des échelles utilisées sont les mêmes pour toutes les cartes, quelles que soient les valeurs de chaque carte. Par exemple, si la carte 1 a des valeurs entre 0 et 1, et la carte 2 a des valeurs de 0-0.5, les cellules avec une valeur de 0,5 doivent avoir la même couleur sur les deux cartes.
Par exemple:
- carte 1 a une valeur de 0 à 1
- carte 2 a des valeurs de 0 à 0,5
- la couleur va du rouge (le plus bas) à vert (le plus élevé)
Je voudrais une valeur de 0,5 pour avoir la même couleur dans les deux cartes (c'est à dire jaune, comme à mi-chemin entre le rouge et le vert). Le comportement actuel est qu'il est en jaune sur la carte 1, et en vert sur la carte 2.
Je ne peux pas trouver un moyen de faire ce travail. Je ne vois aucune façon de définir la plage de valeurs de pixels à utiliser avec la fonction de traçage. setMinMax() n'aide pas (comme 'complot' toujours calcule les valeurs). Même en essayant de définir les valeurs à la main (par exemple g1@data@max <- 10) ne fonctionne pas (ils sont ignorés lors de la représentation).
Enfin, une pile de cartes (qui peuvent être attendus de la parcelle tout sur la même échelle de couleur) ne fonctionne pas non plus - chaque carte a encore sa propre échelle de couleur.
Des idées sur comment faire cela?
EDIT:
La solution que j'ai fini par utiliser est:
plot( d, col=rev( rainbow( 99, start=0,end=1 ) ), breaks=seq(min(minValue( d )),max(maxValue(d)),length.out=100) )
source d'informationauteur mo-seph
Vous devez vous connecter pour publier un commentaire.
Depuis l'image::fonction de trame indique que l'image::base arguments peuvent être passés (et suggère que l'image::la base est probablement utilisé), ne serait-il pas de spécifier le même col= et les pauses= arguments pour tous les appels vers l'image::raster? Vous ne besoin pour obtenir les pauses et le col des arguments de "synchronisation". Le nombre de couleurs doit être un de moins que le nombre de pauses. L'exemple ci-dessous est basé sur le classique volcan de données et la deuxième version montre comment une plage de valeurs peut être exclue à partir d'une image:
Un exemple précis d'aide à cet effort.
Il n'y a plus de travail à faire ici en 'raster' mais voici un hack:
Vous pouvez également utiliser le spplot fonction (sp package)
Vous pouvez également envoyer les valeurs de ggplot (recherche de la r-sig-geo archives pour des exemples)
Si votre RasterLayer des liens vers un fichier très volumineux, vous pourriez le faire, avant d'aller à ggplot
et puis peut-être
Ajouté comme une réponse en réponse à @Tomas
La réponse que j'ai fini par utiliser est:
Solution facile maintenant est d'utiliser le zlim option.
Il ne fonctionne pas pour moi. J'ai utilisé ce script pour diviser l'échelle de couleurs et de sélectionner le plus approprié en fonction de mes données: