2017-07-18 1 views
1

Je génère une carte de la chlorophylle pour le lac. Je veux remplir le lac d'une couleur bleue où il y a une très faible concentration de chlorophylle et un bleu clair pour les valeurs NA. J'utilise un code comme indiqué ci-dessouscomment différencier les couleurs pour le fond et les valeurs NA dans gplot

gplot(Chlorophyll_map_5) + geom_tile(aes(fill=value)) + scale_fill_gradient(low = 'blue', high = 'red', na.value='blue',name="Chl-a (ug/l)",limits=c(0,1000)) + coord_equal()+theme_bw() 

Ce qui me donne un terrain comme celui-ci pour na.value='blue':

na.value='blue'

Quand j'utilise na.value='transparent' je suis arrivé cette image:

na.value='transparent'

Si je change la couleur de la na.value, cela change aussi l'arrière-plan. Y a-t-il un moyen de remplir le lac avec de la couleur sans changer le fond?

La sortie de mes données: `La sortie de mes données:

Formal class 'RasterLayer' [package "raster"] with 12 slots 
[email protected] file :Formal class '.RasterFile' [package "raster"] with 13 slots 
.. .. [email protected] name  : chr "/private/var/folders/68/hm_5ts9x7psb6j3wnb91_bfr0000gn/T/RtmpZ3BLZD/raster/r_tmp_2017-07-18_133827_28365_34843.grd"  
.. .. [email protected] datanotation: chr "FLT8S" 
.. .. [email protected] byteorder : Named chr "little" 
.. .. .. ..- attr(*, "names")= chr "value" 
.. .. [email protected] nodatavalue : num -1.7e+308 
.. .. [email protected] NAchanged : logi FALSE 
.. .. [email protected] nbands  : int 1 
.. .. [email protected] bandorder : Named chr "BIL" 
.. .. .. ..- attr(*, "names")= chr "value" 
.. .. [email protected] offset  : int 0 
.. .. [email protected] toptobottom : logi TRUE 
.. .. [email protected] blockrows : int 0 
.. .. [email protected] blockcols : int 0 
.. .. [email protected] driver  : chr "raster" 
.. .. [email protected] open  : logi FALSE 
[email protected] data :Formal class '.SingleLayerData' [package "raster"] with 13 slots 
.. .. [email protected] values : logi(0) 
.. .. [email protected] offset : num 0 
.. .. [email protected] gain  : num 1 
.. .. [email protected] inmemory : logi FALSE 
.. .. [email protected] fromdisk : logi TRUE 
.. .. [email protected] isfactor : logi FALSE 
.. .. [email protected] attributes: list() 
.. .. [email protected] haveminmax: logi TRUE 
.. .. [email protected] min  : num 0.00335 
.. .. [email protected] max  : num 3870657 
.. .. [email protected] band  : int 1 
.. .. [email protected] unit  : chr "" 
.. .. [email protected] names  : chr "layer" 
[email protected] legend :Formal class '.RasterLegend' [package "raster"] with 5 slots 
.. .. [email protected] type  : chr(0) 
.. .. [email protected] values : logi(0) 
.. .. [email protected] color  : logi(0) 
.. .. [email protected] names  : logi(0) 
.. .. [email protected] colortable: logi(0) 
[email protected] title : chr(0) 
[email protected] extent :Formal class 'Extent' [package "raster"] with 4 slots 
.. .. [email protected] xmin: num 35.8 
.. .. [email protected] xmax: num 36.7 
.. .. [email protected] ymin: num 2.4 
.. .. [email protected] ymax: num 4.65 
[email protected] rotated : logi FALSE 
[email protected] rotation:Formal class '.Rotation' [package "raster"] with 2 slots 
.. .. [email protected] geotrans: num(0) 
.. .. [email protected] transfun:function() 
[email protected] ncols : int 3240 
[email protected] nrows : int 8321 
[email protected] crs  :Formal class 'CRS' [package "sp"] with 1 slot 
.. .. [email protected] projargs: chr "+proj=longlat +ellps=WGS84 +no_defs" 
[email protected] history : list() 
[email protected] z  : list() 
+0

Il ne change pas l'arrière-plan de ce que je peux voir. À quoi ressemblent les données de votre carte? Vous pourriez avoir des NA sur toute cette zone encadrée. – troh

+0

J'ai téléchargé des images Landsat 8 OLI/TIRS et un modèle de régression appliquée. Comment vais-je me débarrasser des valeurs NA sur toute la surface de la boîte et ne conserver que le lac? J'ai recadré l'image précédemment avec le shapefile du lac. –

+0

Pouvez-vous montrer la sortie de 'str' de vos données? – troh

Répondre

0
x <- trim(Chlorophyll_map_5) 
ggplot(Chlorophyll_map_5) + 
geom_tile(aes(fill=value)) + 
scale_fill_gradient(low = 'blue', high = 'red', na.value='blue',name="Chl-a (ug/l)",limits=c(0,1000)) + 
coord_equal()+theme_bw() 

par la documentation, la fonction trim « cultures une couche raster en supprimant les lignes extérieures et les colonnes qui contiennent uniquement des valeurs NA "

+0

Désolé, cela n'a pas fonctionné. Je reçois la même image que j'ai posté. –

+0

Peut-être que spécifier la largeur de la tuile va le changer? Il est difficile à reproduire sans un exemple de données minimal. – troh

+0

J'ai recadré l'image avec le fichier de formes du lac mais les valeurs sont toujours en dehors de la zone du lac –