由于NA而被删除的轮廓多边形边框

问题描述:

我想在R中使用ggplot2绘制一个形状文件。更具体地说,我想绘制几个主要城市的每个区块的%白色。到目前为止,我已经与纽黑文合作过。问题是有些块没有填充,在这种情况下,%white = NA。 Ggplot自动以灰色绘制这些块。我想用白色画出它们。由于NA而被删除的轮廓多边形边框

New Haven with grey NAs

c_opts <- theme(axis.text.x=element_blank(), 
axis.text.y=element_blank(), 
axis.title.x=element_blank(), 
axis.title.y=element_blank(), 
axis.ticks = element_blank(), 
legend.text=element_text(size=10), 
legend.background=element_blank(), 
legend.key=element_rect(fill='transparent', colour=NA), 
panel.grid.major=element_line(colour='white'), 
panel.background=element_rect(fill='transparent', colour=NA), 
legend.justification=c(0,0), 
legend.position=c(.15,.15), 
legend.title=element_text(size=11, face='bold')) 

map <- qplot(PolyCoordsY, PolyCoordsX, data=nh_geom, group=Poly_Name, fill = pc_nhwhite, geom="polygon", xlab = "", ylab = "", main = "New Haven") 
map + c_opts + scale_fill_gradient(name = "% White") 

我可以通过添加na.value = NA到scale_fill_gradient参数排除在NAS。

map <- qplot(PolyCoordsY, PolyCoordsX, data=nh_geom, group=Poly_Name, fill = pc_nhwhite, geom="polygon", xlab = "", ylab = "", main = "New Haven") 
map + c_opts + scale_fill_gradient(name = "% White", na.value = NA) 

New Haven with excluded NAs

虽然由此得出在白色的NA块,这也排除了这些区块的多边形边界。有谁知道如何保持多边形轮廓?

+0

请提供一个可重复的数据集。另外,考虑使用'ggplot()'而不是'qplot()',因为它更好地处理涉及的绘图任务。 – metasequoia

没有可重现的数据集,我无法测试这是否适用于您的特定情况。

尝试通过一种颜色来na.value像这样:

scale_fill_gradient(name = "% White",na.value="white") 
+0

使用'ggplot()'而不是'qplot()'原来是个好主意。我可以通过在'ggplot'后面添加一个'geom_polygon()'参数来得到一个令人满意的解决方案,该参数是NAs的子集:'ggplot(aes(PolyCoordsY,PolyCoordsX,group = Poly_Name,fill = pc_nhwhite),data = nh_geom ,main =“New Haven”)+ geom_polygon()+ c_opts + scale_fill_gradient(name =“%White”,na.value = NA)+ geom_polygon(aes(PolyCoordsY,PolyCoordsX,color = NA),data = subset(nh_geom, is.na(pc_nhwhite)),fill =“white”,alpha = 0.5,linetype = 1,col =“gray”,cex = 0.25)' – user1869937