我有一个包含 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
数字都与单独的Lat
和Long
坐标线相关。我想要做的是将所有这 7696 条单独的线叠加到现有绘图上。
上面的示例数据包含第 1、2、3 行的Lat
和Long
坐标。
将所有这些线叠加到现有绘图上的最佳方法是什么,我在想也许是某种循环?
最佳答案
使用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()
使用基础 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))
关于r - 将数据框中的多行与索引列叠加到现有图中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24388336/