2012-12-02 73 views
4

我想在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

回答

0

沒有可重現的數據集,我無法測試這是否適用於您的特定情況。

嘗試通過一種顏色來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

相關問題