我有一个从简单的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))
答案 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()
以下是输出示例: