【问题标题】:3D surface plot in RR中的3D曲面图
【发布时间】:2014-04-25 14:19:29
【问题描述】:

我正在尝试在 R-Project 中创建 3D 图。我知道以前有这样的问题,但我无法用那里的答案解决我的问题。

我拥有的是:

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")

我想创建一个彩色曲面图,x 轴上是 Vdot_L,y 轴上是 Qdot_verd,z 轴上是 P。我很感激每一个帮助。

【问题讨论】:

    标签: r plot


    【解决方案1】:

    所以是这样的??

    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)
    

    【讨论】:

    • 太完美了,谢谢!现在我的问题是我无法调整 z 轴的限制。我尝试的是 'persp3d(Vdot_L, Qdot_verd, P, col=colors, zlim=c(0,500))' 但什么也没有发生……没有错误消息,情节中没有反应……有什么想法吗?
    【解决方案2】:

    您研究过 Plot3D 软件包吗? http://cran.r-project.org/web/packages/plot3D/plot3D.pdf 这里有一个名为surf3d 的方法,它似乎可以满足您的需求。导入包后,将值转换为矩阵并写入:

    surf3d(Vdot_L, Qdot_verd, P)
    

    还有一个颜色参数可以调整。

    或者,使用 rgl,避免矩阵问题:

    rgl.surface(Vdot_L, Qdot_verd, P)
    

    还可以查看这些帖子了解更多信息: R: 3D surface plot from 2D matrix How to create 3D - MATLAB style - surface plots in R

    【讨论】:

    • 感谢您的回答!我已经试过了。它给了我错误“'x'应该是一个矩阵”。我不明白为什么。
    • 所以在这种情况下 x 必须是一个矩阵,所以我认为你需要使用matrix(Vdot_L, nrow = ?, ncol = ?) 对其进行转换并指定行数/列数。
    • 这里有一个问题:你是想把它做成一个散点图,其中每个点都有每个数据列表中对应值的 x,y,z 坐标吗?
    • 其实你为什么不用rgl.surface()呢?我认为这更符合您的要求。
    • rgl.surface 听起来与我正在寻找的完全一样。但我现在得到的结果只是一个平面。它应该看起来更弯曲。我得赶上火车。稍后我会尝试更多...谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-05-06
    • 2018-03-10
    • 2018-03-15
    • 2017-02-08
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    相关资源
    最近更新 更多