首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多元图中颜色的r层

多元图中颜色的r层
EN

Stack Overflow用户
提问于 2015-09-27 23:16:30
回答 2查看 355关注 0票数 1

如何使不同的颜色层更好地看到R中的多元函数?我想检查函数是否是拟凹和拟凸,但这些东西很难在一个单色图中看到.

代码语言:javascript
复制
# Define Sequences for Multivariate Function
xf3x1 <- seq(-100, 100, length=500)
xf3x2 <- seq(-100, 100, length=500)

# Outer Calculates the Cartesian Product
z <- outer(xf3x1,xf3x2,function(xf3x1,xf3x2) xf3x1*xf3x2)
persp(xf3x1,xf3x2,z,col="lightgreen",theta=30,phi=20, main="Problème 3: Function 3")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-28 01:03:31

plot3D包是一个额外的选项。默认情况下,z值为persp3D颜色:

代码语言:javascript
复制
library(plot3D)  # For persp3D function

# Define Sequences for Multivariate Function
#### length=50 to speed up plotting ####
xf3x1 <- seq(-100, 100, length=50)
xf3x2 <- seq(-100, 100, length=50)

# Outer Calculates the Cartesian Product
z <- outer(xf3x1,xf3x2,function(xf3x1,xf3x2) xf3x1*xf3x2)

persp(xf3x1,xf3x2, z, theta=30, phi=20, 
      col="lightgreen",
      main="persp: Black border lines overwhelm plot")

persp(xf3x1,xf3x2, z, theta=30, phi=20, 
      col="lightgreen",
      border="black", lwd=0.2,  # Or border=NA per @jlhoward
      main="persp: Thinner border lines")

persp3D(xf3x1,xf3x2, z, theta=30, phi=20, 
        main="persp3D: No borders by default")

persp3D(xf3x1,xf3x2, z, theta=30, phi=20, 
        border="black", lwd=0.5,
        main="persp3D with borders")

票数 1
EN

Stack Overflow用户

发布于 2015-09-28 00:53:16

首先,需要设置border=NA以关闭表面面周围的边框。

一种方法是基于z值的颜色.适应this post

代码语言:javascript
复制
nrz <- nrow(z)
ncz <- ncol(z)
color <- rev(rainbow(100))
zfacet <- z[-1, -1] + z[-1, -ncz] + z[-nrz, -1] + z[-nrz, -ncz]
facetcol <- cut(zfacet, 100)
persp(xf3x1,xf3x2,z,col=color[facetcol],border=NA,,theta=30,phi=20)

我鼓励您尝试在surface3d(...)包中使用rgl,它可以创建可旋转的3D图形。下面的图片只是一个屏幕截图。

代码语言:javascript
复制
zlen <- diff(range(z)) + 1
clrs <- rev(rainbow(zlen))
col <- clrs[ z - min(z) + 1 ] # assign colors to heights for each point
open3d(scale=c(100,100,1))
surface3d(xf3x1,xf3x2,z,col=col, main="Problème 3: Function 3")
axes3d(box=TRUE)
title3d(xlab="xf3f1", ylab="xf3x2", zlab="z")

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32813817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档