r - 将数据框中的多行与索引列叠加到现有图中

标签 r plot

我有一个包含 3 列的数据框(Id、Lat、Long),您可以使用以下数据构建其中的一小部分:

df <- data.frame(
  Id=c(1,1,2,2,2,2,2,2,3,3,3,3,3,3),
  Lat=c(58.12550, 58.17426, 58.46461, 58.45812, 58.45207, 58.44512, 58.43358, 58.42727, 57.77700, 57.76034, 57.73614, 57.72411, 57.70498, 57.68453),
  Long=c(-5.098068, -5.314452, -4.914108, -4.899922, -4.887067, -4.873312, -4.852384, -4.840817, -5.666568, -5.648711, -5.617588, -5.594681, -5.557740, -5.509405))

Id 列是索引列。因此,具有相同 Id 编号的所有行都具有单行的坐标。在我的数据框中,这个 Id 数字从 1 到 7696 不等。所以我有 7696 条线要绘制。

每个Id数字都与单独的LatLong坐标线相关。我想要做的是将所有这 7696 条单独的线叠加到现有绘图上。

上面的示例数据包含第 1、2、3 行的LatLong 坐标。

将所有这些线叠加到现有绘图上的最佳方法是什么,我在想也许是某种循环?

最佳答案

使用ggplot2:

#dummy data
df <- data.frame(
  Id=c(1,1,2,2,2,2,2,2,3,3,3,3,3,3),
  Lat=c(58.12550, 58.17426, 58.46461, 58.45812, 58.45207, 58.44512, 58.43358, 58.42727, 57.77700, 57.76034, 57.73614, 57.72411, 57.70498, 57.68453),
  Long=c(-5.098068, -5.314452, -4.914108, -4.899922, -4.887067, -4.873312, -4.852384, -4.840817, -5.666568, -5.648711, -5.617588, -5.594681, -5.557740, -5.509405))


library(ggplot2)
#plot
ggplot(data=df,aes(Lat,Long,colour=as.factor(Id))) +
  geom_line()

enter image description here

使用基础 R:

#plot blank
with(df,plot(Lat,Long,type="n"))
#plot lines
for(i in unique(df$Id))
  with(df[ df$Id==i,],lines(Lat,Long,col=i))

enter image description here

关于r - 将数据框中的多行与索引列叠加到现有图中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24388336/

相关文章:

r - 绘制密度差异语义数据集

绘制分位数回归线

javascript - Django 使用plotly 和表单中的数据绘制图表

Matlab 多堆积图

r - 如何创建一个变量,该变量是给定时间范围内按 id 连续行的总和

r - 当只有某些列匹配时如何进行 rbind

r - 使用 `j` 选择 `x` 的连接列及其所有非连接列

python - 如何在 Python 中将 "edge bundling"与 networkx 和 matplotlib 一起使用?

r - 在 Ubuntu 16.04 (Xenial) 上安装 R 包 "devtools"时出现问题

r - 固定效应工具变量 (IV) 回归与可用的诊断测试