ggplot определяет разрывы оси долготы / широты - PullRequest
0 голосов
/ 06 января 2020

Я использую следующий код для создания карты одного «trial_area» из шейп-файла и наложения береговой линии и «prod_areas» из второго шейп-файла. Затем я используюordin_SF, чтобы увеличить масштаб карты до st_bbox полигона trial_area. Однако для некоторых областей (см. Пример ниже) текстовые метки осей в конечном итоге перекрываются, есть ли способ, которым я могу указать интервалы меток оси, чтобы избежать этого (например, .1 для широты и .5 для долготы)?

poly <- trial_areas %>% 
filter(Id==5) 
ext <- st_bbox(poly)

plot_SoundOfSleat <- ggplot() +
theme(panel.background = element_rect(fill = 'light blue'),element_line()) +
geom_sf(data=poly)+
geom_sf(data=prod_areas,fill=mycol) +
geom_sf(data = Scot, aes(),
        fill = "lightgreen",col="darkgreen") +
coord_sf(xlim = c(ext[1], ext[3]), ylim = c(ext[2], ext[4]))  +
ggtitle("Sound of Sleat Trial Area 5") +
geom_sf_text(aes(label = Producti_1), data=prod_areas,size=3,hjust=0, vjust=0) +
labs(x = "Longitude", y= "Latitude")

plot_SoundOfSleat

enter image description here

1 Ответ

1 голос
/ 06 января 2020

geom_sf() должно работать без проблем с ggplot2::scale_*_continuous(), где вы можете использовать аргумент breaks =. Будьте осторожны с западными долготами, так как они отрицательны в данных, но положительны в метках.

Я включил несколько примеров ниже:

library(sf)

# sample data
nc <-  st_read(system.file("shape/nc.shp", package="sf"))

# No edits to graticules
nc_1 <- ggplot(nc) + 
          geom_sf() +
          ggtitle('original')

nc_2 <- ggplot(nc) +
          geom_sf() + 
          scale_y_continuous(breaks = c(34, 35, 36)) + 
          scale_x_continuous(breaks = seq(-84, -76, by = 1)) +
          ggtitle('fewer lat, more lon')

nc_3 <- ggplot(nc) +
          geom_sf(data = st_graticule(nc, 
                                      lat = seq(34, 36, by = 1),
                                      lon = seq(-84, -76, by = 4)), 
                  color = 'orange') +
          geom_sf() +
          coord_sf(datum = NA) +
          ggtitle('using st_graticule')

# using cowplot to output single image, rather than 3
cowplot::plot_grid(nc_1, nc_2, nc_3, ncol = 1)

enter image description here

Вы должны иметь возможность использовать выходные данные st_bbox для автоматизации разумного числа сеток (линий сетки), если это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...