如何在 R 中使用 persp() 绘制数据集中的三个变量
How to use persp() with R to graph three variables in a dataset
我有这个数据:
wine <-read.table("http://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data",sep=",")
attach(wine)
我正在尝试使用 persp()
函数
提示变量 V2、V3 和 V4 的 3D 图
我收到这个错误:
Error in persp.default(v2, v3, v4) :
increasing 'x' and 'y' values expected
尽管我已经用 sort()
函数对每个变量进行了排序。
我该如何进行?
这是一些概念上的错误。 persp
用于曲面图,但您的数据只支持散点图。
对于曲面图,我们需要将网格上的曲面值扩展 x
、y
。换句话说,我们在网格上绘制二维函数 f(x, y)
:expand.grid(x = sort(x), y = sort(y))
。我们需要知道这个函数 f
并且(在几乎所有情况下)使用 outer
在这样的网格上评估它。考虑这个例子:
x <- seq(-10, 10, length = 30) ## already in increasing order
y <- x ## already in increasing order
f <- function(x, y) {r <- sqrt(x ^ 2 + y ^ 2); 10 * sin(r) / r}
z <- outer(x, y, f) ## evaluation on grid; obtain a matrix `z`
persp(x, y, z)
另一方面,散点图仅限于 (x, y)
:
library(scatterplot3d)
scatterplot3d(V2, V3, V4) ## your `wine` data
根据哲园的回复,persp 不是 3d 散点图的正确选择,您可以使用 rgl 代替您的 wine 数据:
library(rgl)
plot3d(wine$V1, wine$V2, wine$V3, type='s', size=2, col=wine$V1)
我有这个数据:
wine <-read.table("http://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data",sep=",")
attach(wine)
我正在尝试使用 persp()
函数
我收到这个错误:
Error in persp.default(v2, v3, v4) :
increasing 'x' and 'y' values expected
尽管我已经用 sort()
函数对每个变量进行了排序。
我该如何进行?
这是一些概念上的错误。 persp
用于曲面图,但您的数据只支持散点图。
对于曲面图,我们需要将网格上的曲面值扩展 x
、y
。换句话说,我们在网格上绘制二维函数 f(x, y)
:expand.grid(x = sort(x), y = sort(y))
。我们需要知道这个函数 f
并且(在几乎所有情况下)使用 outer
在这样的网格上评估它。考虑这个例子:
x <- seq(-10, 10, length = 30) ## already in increasing order
y <- x ## already in increasing order
f <- function(x, y) {r <- sqrt(x ^ 2 + y ^ 2); 10 * sin(r) / r}
z <- outer(x, y, f) ## evaluation on grid; obtain a matrix `z`
persp(x, y, z)
另一方面,散点图仅限于 (x, y)
:
library(scatterplot3d)
scatterplot3d(V2, V3, V4) ## your `wine` data
根据哲园的回复,persp 不是 3d 散点图的正确选择,您可以使用 rgl 代替您的 wine 数据:
library(rgl)
plot3d(wine$V1, wine$V2, wine$V3, type='s', size=2, col=wine$V1)