我有2组深度点测量值,例如:
> a
depth value
1 2 2
2 4 3
3 6 4
4 8 5
5 16 40
6 18 45
7 20 58
> b
depth value
1 10 10
2 12 20
3 14 35
我希望在一个图中显示两个组,其中包含深度和不同符号,您可以看到here
plot(a$value, a$depth, type='b', col='green', pch=15)
points(b$value, b$depth, type='b', col='red', pch=14)
情节似乎没问题,但令人讨厌的部分是绿色符号都已连接(虽然我也想连接线)。我只想在一组具有2米间隔的连续数据点时才想要连接,即符号应该用2到8米(绿色)的线连接,然后B组符号应该连接10-14米(红色)和A组符号应连接(绿色),这意味着我不希望看到8米样本与A组16米之间的连接。
一个简单的解决方案可能是将A组分成两部分(比如A-浅和A-深),然后分别绘制A-shallow,B和A-deep。但这是完全不切实际的,因为我有数百个数据组,有数百个数组,即我必须产生许多深度剖面。因此,必须有一种编程的方法,使得对于特定的一组样本,点不会超过规定的频率/深度间隔(例如在这种情况下为2米)。有什么想法吗?
答案 0 :(得分:3)
如果plot
或lines
遇到NA
值,则会自动中断该行。使用它,我们可以在数据中插入缺失测量值的NA值,这样可以解决问题。一种方法是这个
rng<-range(range(a$depth), range(b$depth))
rng<-seq(rng[1], rng[2], by=2)
aa<-rep(NA, length(rng))
aa[match(a$depth, rng)]<-a$value
bb<-rep(NA, length(rng))
bb[match(b$depth, rng)]<-b$value
plot(aa, rng, type='b', col='green', pch=15)
points(bb, rng, type='b', col='red', pch=14)
哪个产生
请注意,此代码假定所有深度测量均可被2整除。
我不确定您的所有群组是否确实拥有单独的data.frames,但根据您的实际数据结构,可能有更好的方法来填充缺失值。
答案 1 :(得分:2)
我们可以使用这样一个事实:当有NA
时,线条会中断,就像MrFlick建议的那样。但是,可能有一种更简单的方法:
#Merge the two sets together
all = merge(a,b,by='depth', all=T)
#Plot the lines
plot(all$value.x, all$depth, type='b', col='green', pch=15)
points(all$value.y, all$depth, type='b', col='red', pch=14)