如何使用带有R的persp()来绘制数据集中的三个变量

时间:2016-11-01 11:41:04

标签: r plot visualization

我有这些数据:

wine <-read.table("http://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data",sep=",")
attach(wine)

我试图用persp()函数提示变量V2,V3和V4的三维图

我收到此错误:

Error in persp.default(v2, v3, v4) : 
  increasing 'x' and 'y' values expected

虽然我已经使用sort()函数对每个变量进行了排序。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

这是一个概念上的错误。 persp用于曲面图,但您的数据仅支持散点图。

对于曲面图,我们需要在xy上展开的网格上的曲面值。换句话说,我们正在网格上绘制2D函数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)

enter image description here

另一方面,散点图仅限于(x, y)

library(scatterplot3d)
scatterplot3d(V2, V3, V4)  ## your `wine` data

enter image description here

答案 1 :(得分:1)

根据Zheyuan的回复,persp不是3d中散点图的最佳选择,你可以使用rgl代替你的葡萄酒数据:

library(rgl)
plot3d(wine$V1, wine$V2, wine$V3, type='s', size=2, col=wine$V1)

enter image description here