首页 > 解决方案 > 如何使用“persp”函数在 R 中绘制不连续的曲面

问题描述

我想使用该persp函数绘制一个不连续的曲面。

这是功能:

f <- function(x, y)
{
  r <- sqrt(x^2 + y^2)
  out <- numeric(length(r))
  ok <- r >= 1
  out[ok] <- exp(-(r[ok] - 1))
  return(out)
}

为了在常规网格上获得函数的透视图,我使用

x <- y <- seq(-4, 4, length.out = 50)
z <- outer(x, y, f)
persp(x, y, z, , theta = 30, phi = 30, expand = 0.5, col = "lightblue")

生成的图不能正确显示曲面不连续点的圆形性质。关于如何获得更好的透视图而不是等高线图或图像的任何建议?

标签: rplot

解决方案


如果某些互动对您有用,我会选择这样的东西:

library(plotly)
plot_ly(z = ~ z) %>% add_surface()

因为从上方可以最好地看到圆形性质,所以phi90 的 a 最好能突出这个特征,但是这样你就失去了其余的形状,而且它是毫无用处的。因此,我会选择一些互动的东西。

persp(x, y, z, , theta = 30, phi = 30, expand = 0.5, col = "lightblue")

透视图


推荐阅读