R 在地图上绘制具有相同纬度和经度的线(ggplot、geom_曲线)

R 在地图上绘制具有相同纬度和经度的线(ggplot、geom_曲线),r,ggplot2,R,Ggplot2,关于在R中使用ggplot在地图上画线,我想从您那里得到一些帮助 假设有两个观测点A和B,它们的起点和终点经纬度彼此相同。 我想在地图上画两条不重叠的线 我尝试使用geom_curve(),但它似乎在同一轨迹上画了两条线 有没有明智的方法来解决这个问题? 我想说这有点类似于geom_repel(),但不是针对文本或标签,而是针对曲线 谢谢。这是一个基本的R解决方案(一个tidyverseone-wld看起来不那么“代码y”,但本质上做的是相同的事情 如果这些确实是X&Y对,那么您所要做的就是添加

关于在R中使用ggplot在地图上画线,我想从您那里得到一些帮助

假设有两个观测点A和B,它们的起点和终点经纬度彼此相同。 我想在地图上画两条不重叠的线

我尝试使用geom_curve(),但它似乎在同一轨迹上画了两条线

有没有明智的方法来解决这个问题? 我想说这有点类似于geom_repel(),但不是针对文本或标签,而是针对曲线

谢谢。

这是一个基本的R解决方案(一个
tidyverse
one-wld看起来不那么“代码y”,但本质上做的是相同的事情

如果这些确实是X&Y对,那么您所要做的就是添加一个中点,抖动称为中点。我没有为您完全“解决”这一问题,因为您确实需要做一些工作(例如,在进行抖动破解之前,仅为具有相同起点/终点的行过滤数据帧):

库(ggplot2)

lines_df希望我的回答也能让您了解如何为下次模拟一些样本数据,因为这个问题可能会很快结束。谢谢@hrbrmstr。这非常有帮助。
library(ggplot2)

lines_df <- as.data.frame(state.center, stringsAsFactors = FALSE)[c(4,20,4,20),]
lines_df$grp <- c("a", "a", "b", "b")
lines_df$where <- rep("end", 4)

do.call(
  rbind.data.frame,
  lapply(
    split(lines_df, lines_df$grp),
    function(.df) {
      rbind.data.frame(
        .df, 
        data.frame(
          x = sum(.df$x)/2, y = sum(.df$y)/2, 
          grp = .df$grp[1], where = "mid",
          stringsAsFactors = FALSE
        )
      )

    }
  ) 
) -> lines_df

lines_df[lines_df$where == "mid", "y"] <- jitter(lines_df[lines_df$where == "mid", "y"])

ggplot(lines_df, aes(x, y, group=grp)) +
  geom_line(aes(color=grp))