【问题标题】:Area series overlay in R plotR图中的区域系列叠加
【发布时间】:2015-09-21 21:45:58
【问题描述】:

我有一个从简单的 3 列 csv 文件生成的水平图。 X 列是沿轨道的距离,Y 是水深,Z 是水温。由于 levelplot 函数不知道实际的底部深度,它会在海底下插值。我想覆盖一个填充区域系列来掩盖这些值并描绘海底。我可以将沿轨道的实际底部深度添加到我的 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))

这是我目前拥有的一个示例:

这就是我想要制作的:

【问题讨论】:

标签: r


【解决方案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()

这是一个示例输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    相关资源
    最近更新 更多