我希望通过垂直堆叠来绘制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)
您可以看到,不应该在图表的每个级别上的颜色轮廓是相同的。我无法弄清楚如何改变它。
对延迟回到此事表示歉意。感谢您的输入