2017-04-27 82 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