2017-10-31 22 views
1

누락 된 데이터가있는지도를 인쇄하는 데 문제가 있습니다.누락 된 데이터가있는 영역은 geom_sf/ggplot2 map에서 삭제됩니다. 왜?

는 나는 "빈"Shape 파일을 생성 할 수 있어요 : 다음 Shape 파일

df.shape <- dplyr::left_join(BiH.shape.sf, data, by="ID_3") 

에 데이터를 추가하고 새로운지도를 만들어

empty.shape.sf <- 
    ggplot(BiH.shape.sf)+ 
    geom_sf(fill="grey",colour="black")+ 
    theme(legend.position="none", 
     axis.title=element_blank(), 
     axis.text=element_blank(), 
     axis.ticks = element_blank(), 
     strip.text.y = element_text(size = 10), 
     panel.background=element_rect(fill="white")) 

print(empty.shape.sf) 

enter image description here .

data.map <- df.shape%>% 
    filter(year==2000|year==2004)%>% 
    ggplot()+ 
    geom_sf(aes(fill=res), colour="black")+ 
    theme(legend.position="none", 
     axis.title=element_blank(), 
     axis.text=element_blank(), 
     axis.ticks = element_blank(), 
     strip.text.y = element_text(size = 10), 
     panel.background=element_rect(fill="white"))+ 
    scale_fill_gradient(low="blue", high="red", limits=c(0,100))+ 
    facet_wrap(~year) 

print(data.map) 

enter image description here

왜 투영 된 데이터가 국경없이 실종되는 분야입니다/떨어졌다? left_join을 사용하면 모든 테두리/영역이 그대로 유지된다고 가정했을 것입니다. 이 경계선/구역을 어떻게 유지할 수 있습니까? 각 누락 된 영역에 대해 NA가있는 행을 포함하는 '완전한'데이터 세트를 만드는 것 외에 다른 방법이 있습니까?

+1

[이 스레드를 참조하십시오 (https://stackoverflow.com/questions/42365483/add-a-box-for-the-na-values-to-the-ggplot-legend-for-a-continous-map).) 그래디언트 채우기가있는지도에 NA 값을 추가하는 방법은 –

+0

ggplot2는 자동으로 'NA'를 삭제하지 않기 때문에 질문에 사용하는 데이터를 표시하지 않았기 때문에지도 및 데이터와 관련된 제안을하는 것은 어렵습니다. 이것에 대한 경고 메시지를 받았습니까? – seasmith

답변

0

scale_fill_gradient 호출에 na.value 인수를 간단하게 추가 할 수 있습니다. 나는 특정 예를 재현 할 수 없기 때문에

library(ggplot2) 
library(sf) 
nc <- sf::st_read(system.file("shape/nc.shp", package = "sf"), quiet = TRUE) 
nc$BIR74[1] <- NA 
nc %>% ggplot()+ 
    geom_sf(aes(fill=BIR74), colour="white")+ 
    theme(legend.position="none", 
     axis.title=element_blank(), 
     axis.text=element_blank(), 
     axis.ticks = element_blank(), 
     strip.text.y = element_text(size = 10), 
     panel.background=element_rect(fill="white"))+ 
    scale_fill_gradient(low="blue", high="red",na.value = "black") 

scale_fill_discrete sf with NA value

, 당신이 다른 유형을 사용하려는 추측에는 요 : 여기에 sf 패키지에 포함 된 노스 캐롤라이나 Shape 파일을 사용하여 재현 예입니다 join인데, 그렇지 않으면 shapefile은 누락 된 행 (및 누락 된 모양)을 언급 된대로 유지합니다.

+0

이것이 해결책이라고 생각하지 않습니다. 예제를 실행하고 na.value 인수를 제거하면 검정이 아닌 NA를 나타내는 회색 영역이 생깁니다. 나는이 문제가 filter() – sebdalgarno