离开 geom_path 的路径

Leaving the path open from geom_path

我正在使用 geom_path 在海岸线地图上绘制数据,但我无法删除连接第一个和最后一个数据点的线。这方面的数据集相当大,但可以找到 here.

问题已在 this thread 上报告并修复,但对我的情况没有帮助。

LHplot <- ggplot(data = LH, aes(x = long, y = lat, group=group)) +
  geom_path(aes(group=group), size = 1, color = "darkgrey") + 
  theme_bw() +
  theme(axis.line.y=element_blank(),
    axis.line.x = element_blank(),
    axis.title.x = element_blank(),
    axis.title.y = element_blank(),
    axis.text = element_blank(),
    axis.ticks = element_blank(),
    panel.grid.major = element_blank(), # switch off major gridlines
    panel.grid.minor = element_blank(), # switch off minor gridlines
    panel.border = element_blank(),
    text=element_text(family="Times New Roman", size=11)
  )
LHplot

我还注意到,在绘制数据的子集时,路径可能打开也可能不打开

LH2 <- LH[1:16000,]
LH2plot <- ggplot(data = LH2, aes(x = long, y = lat, group=group)) +
  geom_path(aes(group=group), size = 1, color = "darkgrey") + 
  theme_bw() +
  theme(axis.line.y=element_blank(),
    axis.line.x = element_blank(),
    axis.title.x = element_blank(),
    axis.title.y = element_blank(),
    axis.text = element_blank(),
    axis.ticks = element_blank(),
    panel.grid.major = element_blank(), # switch off major gridlines
    panel.grid.minor = element_blank(), # switch off minor gridlines
    panel.border = element_blank(),
    text=element_text(family="Times New Roman", size=11)
  )
LH2plot

LH2 <- LH[1:50000,]
LH2plot <- ggplot(data = LH2, aes(x = long, y = lat, group=group)) +
  geom_path(aes(group=group), size = 1, color = "darkgrey") + 
  theme_bw() +
  theme(axis.line.y=element_blank(),
    axis.line.x = element_blank(),
    axis.title.x = element_blank(),
    axis.title.y = element_blank(),
    axis.text = element_blank(),
    axis.ticks = element_blank(),
    panel.grid.major = element_blank(), # switch off major gridlines
    panel.grid.minor = element_blank(), # switch off minor gridlines
    panel.border = element_blank(),
    text=element_text(family="Times New Roman", size=11)
  )
LH2plot

问题是否来自数据集的差距?或者只是它在数据框中的组织方式以及 geom_path 如何读取它?

编辑

来自下面的评论:我按纬度对数据进行排序以绘制从南到北的路径:

LH <- LH[order(LH$lat),]

这解决了线路问题,但又产生了另一个问题:

问题是你的大陆海岸线不是从一端开始到另一端,而是从中间某处开始。

首先是识别跳跃。下面我仅使用纬度来识别它,但如果需要(使用测地线距离)可以同时使用纬度和经度,但这会徒劳无功。

然后我们需要重新排列数据,将行从中断上方移动到数据集的末尾(在这种情况下,因为行在挪威顺时针方向)。

library(tidyverse)
#Find the largest change in latitude
LH %>% 
  group_by(group) %>% 
  mutate(llat = lag(lat), dlat = abs(lat - llat)) %>% 
  ungroup() %>% 
  mutate( n = 1:n()) %>% 
  slice(which.max(dlat))

#re-arrange data
bind_rows(LH %>% slice(-(1:16015)),
      LH %>% slice(1:16015)) %>% 
      ggplot(aes(x = long, y = lat, group=group)) +
      geom_path(size = 1, color = "darkgrey")