区域系列覆盖在R图中

时间:2015-09-21 21:45:59

标签: r

我有一个从简单的3列csv文件生成的级别图。 X列是沿轨道的距离,Y是水深,Z是水温。由于水平图功能不了解实际底部深度,因此它将插入海底以下的值。我想覆盖一个填充区域系列来模糊这些值并描绘海底。我能够沿着轨道将实际底部深度添加到我的csv文件中,或者我可以创建第二个数据系列。我不知道如何添加叠加层。非常感谢任何帮助。

这是我的r脚本:

d<-read.csv("D:/R_plots/temp_data.csv",header=F,col.names=c("X","Y","Z")) library(latticeExtra) col.l <- colorRampPalette(c('blue', 'cyan', 'green', 'yellow', 'orange', 'red')) col.divs<-20 levelplot(Z ~ X * Y, d, cuts=50, contour=TRUE, xlab="Distance", ylab="Depth (m)", main="Temperature", col.regions=col.l, at=seq(from=0,to=6,length=col.divs), panel=panel.2dsmoother, args=list(span=0.5))

这是我目前拥有的一个例子: enter image description here

以下是我试图制作的内容: enter image description here

1 个答案:

答案 0 :(得分:1)

我的解决方案是使用格子功能添加xyarea面板。测深数据从单独的文件加载并覆盖在水平图上。

这是一个代码示例:

data<-read.csv("D:/R_plots/temp_data.csv",
header=F,col.names=c("X","Y","Z"))
bathy<-read.csv("D:/R_plots/Bathy.csv",header=F,col.names=c("A","B"))
library(latticeExtra)
col.l <- colorRampPalette(c('blue', 'cyan', 'green', 'yellow', 
'orange', 'red'))
col.divs<-20
levelplot(Z ~ X * Y, d, cuts=50, contour=TRUE, 
         xlab="Distance (m)", ylab="Depth (m)",
         main="Temperature", col.regions=col.l,
         at=seq(from=-3,to=10,length=col.divs),
         panel=panel.2dsmoother, args=list(span=0.2))
trellis.focus("panel",1,1)
do.call("panel.xyarea",
       list(x=c(unlist(bathy["A"])), y=c(unlist(bathy["B"])),
       col="gray34",groups = NULL,origin = NULL))
trellis.unfocus()

以下是输出示例:

enter image description here