ChrisG
ChrisG

Reputation: 343

3D surface plot in R

I'm trying to create a 3D plot in R-Project. I know there was a question like this before but I couldn't solve my problems with the answers there.

What I have is:

Vdot_L = c(0,1,2,3,4,5,6,7,8,9,10)
Qdot_verd = c(2000,2100,2200,2300,2400,2500,2600,2700,2800,2900,3000) 
zeta_ex = 0.4
T_U = 293.15 #K
T_verd = 273.15 #K
T_cond=Vdot_L*2+T_U
epsilon_k = zeta_ex * T_verd/(T_cond - T_verd)
Pfun <- function(a,b) {a/b}
P    <- outer(Qdot_verd, epsilon_k, FUN="Pfun")

What I'd like to create is a colored surface plot with Vdot_L on the x-Axis, Qdot_verd on the y-Axis and P on the z-Axis. I'm thanful for every help.

Upvotes: 2

Views: 10156

Answers (2)

jlhoward
jlhoward

Reputation: 59345

So something like this??

library(rgl)
zlim        <- range(P,na.rm=T)
zlen        <- zlim[2] - zlim[1] + 1
color.range <- rev(rainbow(zlen))       # height color lookup table
colors      <- color.range[P-zlim[1]+1] # assign colors to heights for each point
persp3d(Vdot_L, Qdot_verd, P, col=colors)

Upvotes: 4

Akshay
Akshay

Reputation: 812

Have you investigated the Plot3D package? http://cran.r-project.org/web/packages/plot3D/plot3D.pdf There's a method in here called surf3d which seems like it would do what you want. After importing the package, cast your values to matrix and write:

surf3d(Vdot_L, Qdot_verd, P)

There's also a color parameter which you can adjust.

Alternatively, use rgl, and avoid the matrix issue:

rgl.surface(Vdot_L, Qdot_verd, P)

Also check out these posts for more info: R: 3D surface plot from 2D matrix How to create 3D - MATLAB style - surface plots in R

Upvotes: 1

Related Questions