我正在尝试使用网格包制作一个“平滑”的等高线图,并且好奇是否有任何方法可以“忽略”我的矩阵中的一半值。有点难以解释,但希望我的代码澄清了这个问题。
链接到我的数据
https://www.dropbox.com/s/a1todt21f1wzkuk/data.matrix.xlsx
代码:
#load necessary packages
require(xlsx)
require(lattice)
require(latticeExtra)
#import data
my.data<-read.xlsx("C:/Users/eckmannm/dropbox/data.matrix.xlsx", sheetName="1",row.names=TRUE)
my.data.matrix<-as.matrix(my.data)
#make ranges for axis
Max.Depth.Values<-(c(1,2,4,6,8,10,12,14,16,18,20))
Trap.Depth.Values<-(c(1,2,4,6,8,10,12,14,16,18,20))
#specify color ramp
col.l <- colorRampPalette(c('red', 'orange', 'yellow', 'green', 'cyan', 'blue'))
#make lattice plot
(colorplot<-
levelplot(
my.data.matrix,
row.values=(Trap.Depth.Values),
column.values=(Max.Depth.Values),
col.regions=col.l,
at=seq(from=0,to=18,length=101),
lattice.options=list(key=list(cex=4)),
aspect = "fill",
xlim=c(1,20),
ylim=c(1,20),
panel = panel.2dsmoother,
ylab=list("Trap Depth (m)",cex=1.4),
xlab=list("Max Depth",cex=1.4),
main=list("CPUE of Redside Shiners at Different Depths",cex=1.6),
colorkey=list(at=seq(from=0, to=18, length=80),
labels=list(at=c(0,3,6,9,12,15,18),
labels=c("0","3", "6", "9","12", "15", "18")))))
使用代码panel=panel.2dsmoother
,我可以创建一个平滑的图像(见下面的图1),但这个图表完全是误导,因为我试图忽略所有小于1的值(它们应该保持不变色。)当我不使用panel=panel.2dsmoother
时,我会得到一个更“正确”的图像,但它是非常像素化的,因为我的值太少(见下面的图2)。
有任何建议或甚至可能吗?
答案 0 :(得分:0)
R明智地处理NA。尝试替换你的底片
my.data.matrix[my.data.matrix <0]=NA