2017-04-27 80 views
0

根据使用“掩模”功能的多边形切割我的光栅后:ggplot如何在“mask”剪切后显示没有NA值的光栅?

ras <- mask(ras0, polygon) 

欲呈现与ggplot光栅(以下链接)。但是,我在位于我的剪切光栅之外的“NA”值存在问题。

https://depots.univ-perp.fr/get?k=9sh9zKXDpRTkVQslvJk

我在“scale_fill_manual”添加选项na.value =“透明”把NA值在透明度上我的地图,但是NA的传说始终保持!

  1. 如何在图例中删除文本“NA”和灰色框中的相应文字?

  2. 当使用“掩码”功能或使用“Writeraster”注册以避免使用ggplot进行显示时出现此问题时,是否有解决方案来移除NA值?

这里是用来显示地图的程序:

library(raster) 
ras<-raster("ras.tif") 

# map 
gplot(ras)+ 
    geom_tile(aes(fill=factor(value, labels=c("A", "B", "C", "D", "E", "F","G"))))+ 
    scale_fill_manual(values = c("red", "#22751a", "#48c665", "#d3d532", "#d78d0d", "#f6e600","#65d6ef"), 
        name= "Legend", na.value="transparent")+ 
    coord_cartesian(xlim = c(-7, 12),ylim = c(32, 38)) + 
#bg 
theme(panel.background = element_rect(colour = "black", fill="lightblue")) 

预先感谢您

+0

我不认为代码是完整的,我们重现。据我所知'ggplot'不能处理类RasterLayer。或者你用'ras'做了一些你没有展示的东西。什么是'ras0'? – ricoderks

+0

请在您的文章中添加一张图片,或者让您的示例具有可再现性。我无法打开.tif文件。 –

+0

对不起,这个显示问题,现在我把我的地图“ras”在 – tazrart

回答

0

似乎scale_fill_manual显示NA值使用时的因素。定义要真正显示的因素的一种方法是使用其他参数breakslabels以及对应向量。如果我用你的代码,这将是:

# Vector of correspondence 
cols <- c("A" = "red", "B" = "#22751a", "C" = "#48c665", 
      "D" = "#d3d532", "E" = "#d78d0d", "F" = "#f6e600","G" = "#65d6ef") 

# plot 
gplot(ras) + 
geom_tile(aes(fill=factor(value, labels=c("A", "B", "C", "D", "E", "F","G"))))+ 
    scale_fill_manual(values = cols, 
        breaks = c("A", "B", "C", "D", "E", "F","G"), 
        labels = c("A", "B", "C", "D", "E", "F","G"), 
        name= "Legend") + 
    coord_cartesian(xlim = c(-7, 12),ylim = c(32, 38)) + 
theme(panel.background = element_rect(colour = "black", fill="lightblue")) 

然而,虽然直接归因值(如字符)的栅格的一个特定的颜色,然后名称,你可以用另一种方式来使用它(我不得不添加一个新的颜色,因为你有你的光栅8级):

# Vector of correspondence 
cols.nb <- c("0" = "blue", "1" = "red", "2" = "#22751a", "3" = "#48c665", 
      "4" = "#d3d532", "5" = "#d78d0d", "6" = "#f6e600", 
      "7" = "#65d6ef") 
# Plot 
gplot(ras) + 
geom_tile(aes(fill = as.character(value))) + 
    scale_fill_manual(values = cols.nb, 
        breaks = 0:7, 
        labels = c("A", "B", "C", "D", "E", "F","G","H"), 
        name = "Legend") + 
    coord_cartesian(xlim = c(-7, 12),ylim = c(32, 38)) + 
theme(panel.background = element_rect(colour = "black", fill="lightblue")) 
+0

有用,非常感谢你StatnMap – tazrart