coord_sf를 사용하여 배율이 조정 된 ggplot 맵에 배율 막대를 추가 하시겠습니까?
sf 패키지와 ggplot2를 사용하여지도를 생성했습니다.
library(ggplot2)
library(sf)
library(rnaturalearth)
state_prov <- rnaturalearth::ne_states(c("united states of america", "canada"), returnclass="sf")
x <- ggplot(data=state_prov) +
geom_sf()+
coord_sf(xlim=c(-170, -95), ylim=c(40, 75))
print(x)
Rstudio에서 다음 맵을 생성합니다.
![](https://post.nghiatu.com/assets/images/s/ebLVo.png)
훌륭하지만 스케일 바를 추가해야합니다. ggsn을 사용하여 코드를 수정하려고 할 때 스케일 바가 전혀 보이지 않습니다.
library(ggplot2)
library(sf)
library(rnaturalearth)
state_prov <- rnaturalearth::ne_states(c("united states of america", "canada"), returnclass="sf")
x <- ggplot(data=state_prov) +
geom_sf()+
coord_sf(xlim=c(-170, -95), ylim=c(40, 75)) +
ggsn::scalebar(state_prov, location="topleft", dist = 50, dist_unit = "km",
transform=TRUE, model="WGS84", height=0.1)
print(x)
나는 높이, 거리 및 위치를 변경하려고 시도했지만 성공하지 못했습니다. coord_sf ()에 대한 호출을 제거하면 스케일이 제대로 조정되지 않은 것을 볼 수 있으므로 ggsn이지도가 coord_sf ()에 의해 확대되고 있음을 인식하지 못한다고 생각합니다.
이 문제를 어떻게 해결합니까? ggsn은 쉽게 수정할 수없는 것 같습니다. 다른 패키지 나 메서드를 사용할 수 있지만 동일한 구조를 기반으로하는 훨씬 더 복잡한 맵이 있기 때문에 비슷한 방식으로 ggplot을 계속 호출해야합니다.
감사!
답변
언급했듯이 coord_sf
코드의 일부 를 주석 처리 하면 스케일 바가 표시됩니다. 내 생각 엔 전체 데이터 세트 에서 위치를 ggsn::scalebar
가져오고 스케일 바를 사용 하여 확대하면 잘립니다.topleft
state_prov
coord_sf
편집 : 이 축척에서 위도 / 경도 투영을 사용하여 축척 막대를지도에 배치 할 때 극심한 왜곡에주의하십시오.https://stackoverflow.com/a/41373569/12400385
다음은 스케일 바를 표시하는 몇 가지 옵션입니다.
옵션 1
에서 정의한대로 줌을 인식하는 것 ggspatial::annotation_scale
대신 사용하십시오 .ggsn
coord_sf
ggplot(data=state_prov) +
geom_sf()+
coord_sf(xlim=c(-170, -95), ylim=c(40, 75)) +
ggspatial::annotation_scale(location = 'tl')
![](https://post.nghiatu.com/assets/images/s/niIyg.png)
옵션 2
원래 코드를 사용하되 state_prov
플로팅하기 전에 잘라서 scalebar
올바른 topleft
.
state_prov_crop <- st_crop(state_prov, xmin=-170, xmax = -95, ymin = 40, ymax = 75)
ggplot(data=state_prov_crop) +
geom_sf()+
#coord_sf(xlim=c(-170, -95), ylim=c(40, 75)) +
ggsn::scalebar(state_prov_crop, location="topleft", dist = 50, dist_unit = "km",
transform=TRUE, model="WGS84", height=0.1)
![](https://post.nghiatu.com/assets/images/s/rpXkA.png)