使用2种不同颜色的线框绘图

时间:2018-06-04 11:27:27

标签: r plot

我正在使用wireframe函数来获取3d图。由于我正在使用一些模型进行预测,我想在sime线框图中绘制观察值和预测值,但我想知道是否可以从预测开始改变颜色。 This是我使用此代码获得的结果:

wireframe(grid$mxt~grid$ages*grid$years,
      xlab=TeX("$x$"),ylab=TeX("$t$"),zlab=TeX("$log\\mu_x(t)"),
      drape = TRUE,col="black",
      col.regions = colorRampPalette(c("yellow", "red"))(100),
      scales = list(arrows=FALSE, cex=0.8, col = "black", font = 1),
      aspect=c(1,0.6))

我想要的是改变2011年的表面颜色,以使情节变得可以理解。我附上data。谢谢

1 个答案:

答案 0 :(得分:0)

嗯,我想我已经部​​分解决了。似乎线框功能不会绘制具有不同(x,y)的不同表面。所以你需要做的是扩展数据,以便有两个不同的表面具有相同的(x,y),但在某个y之前,其中一个包含NA,在另一个包含NA之后。我发布了我使用的代码和结果(我必须改变颜色,但这很容易)。

这是一个年龄段的情节,z等于年龄和年份的对数死亡率。矩阵mxt1具有维度(n,n1),而矩阵pred具有维度(n,n2); y1是维度为n1的向量(观测值的年数),而y2的维度为n2(预测值的年数)。

grid<-expand.grid(list(ages=ages, years=c(y1,y2)))
grid<-rbind(grid,grid)
grid$mxt <- c(cbind(mxt1, matrix(nrow=n,ncol=n2)),
          cbind(matrix(nrow=n,ncol=(n1-1)),mxt1[,n1],pred))
grid$group <- factor(c(rep("obs",n*n1+n*n2),rep("for",n*n1+n*n2)))

wireframe(mxt~ages*years,data=grid,
      groups=group, col.groups=c("red","green"))

矢量网格$ mxt的第二部分中的技巧是绑定两个表面。结果是this

希望有人帮助过。