将多个2D图堆叠成3D图

时间:2015-11-13 17:32:03

标签: r plot 3d rgl

我希望通过垂直堆叠来绘制5个filled.contour图中的3d图。可以使用其他软件,但我需要使用R。我想更确切地说这是一个4d情节

图表应该具有相同的颜色比例,并且侧面有一个图例栏,如下面的代码所示

这里提供了我想要的那种情节的复杂例子 http://www.originlab.com/doc%5Cen/Tutorial/images/Stacked_3D_Surface_Plots/Stacked_3D_Surface.png

到目前为止,我的代码如下:

varx=seq(-250, 250, 25)
vary=seq(-250, 250, 25)

# Import data from csv file
var1=read.csv("~/100.csv", header=F)
var2=read.csv("~/200.csv", header=F)
var3=read.csv("~/300.csv", header=F)
var4=read.csv("~/400.csv", header=F)
var5=read.csv("~/500.csv", header=F)

# Plot filled contour for z1
filled.contour(varx, vary, varz1, nlevels=25, color.palette=heat.colors, xlab="Arbitrary distance", ylab="Arbitrary distance", las=T, key.title=title(main="Intensity"), main="Intensity \nas a function of distance")

我知道我可以在3D中绘制我的变量varz1,但基本上没有什么不同,因为第3和颜色尺寸是相同的。

 library("plot3D")
 persp3D(x=varx, y=vary, z=varz1, clab = "Energy \nIntensity", bty="b2", xlab="Arbitrary X distance", ylab="Arbitrary Y distance", zlab="Z distance (mm)", theta=35, phi=20, ticktype = "detailed", main="Energy intensity \nas a function of distance")

有人有任何想法吗?

TANGENT:我对R比较陌生,并且没有想出如何为我导入的5个变量迭代filled.contour命令。我确定有办法!

编辑:示例代码

 x1=seq(2, 10, 2)
 y1=seq(2, 10, 2)
 z1=matrix(c(0,1,2,1,0,1,2,3,2,1,2,3,4,3,2,1,2,3,2,1,0,1,2,1,0), nrow=5, byrow=T)
 z2=z1^2/3
 z3=z1^3/10

 library(rgl)
 open3d()
 bg3d("white")
 elv=0
 offs=2*elv+1
 nbcol=25
 color=rev(rainbow(nbcol, start = 0/6, end = 4/6))
 zcol=cut(z3, nbcol)
 persp3d(x=x1, y=y1, z=elv*z1+0*offs, col=color[zcol], add=T, axes=F, alpha=0.7,theta=50, phi=25, expand=1);
 persp3d(x=x1, y=y1, z=elv*z2+10*offs, col=color[zcol], add=T, axes=T, alpha=0.7);
 persp3d(x=x1, y=y1, z=elv*z3+20*offs, col=color[zcol], add=T, axes=F, alpha=0.7)

您可以看到,不应该在图表的每个级别上的颜色轮廓是相同的。我无法弄清楚如何改变它。

对延迟回到此事表示歉意。感谢您的输入

0 个答案:

没有答案