ggplot 如何在 "mask" 切割后显示没有 NA 值的栅格?
ggplot How to display a raster without the NA values after a cut with "mask"?
使用 "mask" 函数根据多边形切割光栅后:
ras <- mask(ras0, polygon)
我想用 ggplot 显示栅格(link 下面)。但是,我对位于切割栅格外部的 "NA" 值有疑问。
https://depots.univ-perp.fr/get?k=9sh9zKXDpRTkVQslvJk
我在 "scale_fill_manual" 中添加了选项 na.value = "transparent" 以将 NA 值透明地显示在我的地图上,但 NA 的传说始终存在!
如何删除图例中的文本"NA"和对应的灰色方框?
在使用 "mask" 函数或使用 "Writeraster" 注册时,是否有解决方案可以明确删除 NA 值,以避免在使用 ggplot 显示时出现此问题?
这是用于显示地图的程序:
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"))
提前致谢
似乎 scale_fill_manual
在使用因子时显示 NA 值。定义您真正想要显示的因素的一种方法是使用其他参数 breaks
和 labels
以及对应向量。如果我使用你的代码,这将是:
# 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"))
使用 "mask" 函数根据多边形切割光栅后:
ras <- mask(ras0, polygon)
我想用 ggplot 显示栅格(link 下面)。但是,我对位于切割栅格外部的 "NA" 值有疑问。
https://depots.univ-perp.fr/get?k=9sh9zKXDpRTkVQslvJk
我在 "scale_fill_manual" 中添加了选项 na.value = "transparent" 以将 NA 值透明地显示在我的地图上,但 NA 的传说始终存在!
如何删除图例中的文本"NA"和对应的灰色方框?
在使用 "mask" 函数或使用 "Writeraster" 注册时,是否有解决方案可以明确删除 NA 值,以避免在使用 ggplot 显示时出现此问题?
这是用于显示地图的程序:
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"))
提前致谢
似乎 scale_fill_manual
在使用因子时显示 NA 值。定义您真正想要显示的因素的一种方法是使用其他参数 breaks
和 labels
以及对应向量。如果我使用你的代码,这将是:
# 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"))