1

我正在尝试使用 R 绘制 csv 数据的 3d 曲面图,但我不知道我将如何做到这一点。csv 文件 ( sphere.csv) 是

0,0,0,0,0,0,0,0,0,0,0
0,0,0,0.447213595,0.565685425,0.6,0.565685425,0.447213595,0,0,0
0,0,0.529150262,0.692820323,0.774596669,0.8,0.774596669,0.692820323,0.529150262,0,0
0,0.447213595,0.692820323,0.824621125,0.894427191,0.916515139,0.894427191,0.824621125,0.692820323,0.447213595,0
0,0.565685425,0.774596669,0.894427191,0.959166305,0.979795897,0.959166305,0.894427191,0.774596669,0.565685425,0
0,0.6,0.8,0.916515139,0.979795897,1,0.979795897,0.916515139,0.8,0.6,0
0,0.565685425,0.774596669,0.894427191,0.959166305,0.979795897,0.959166305,0.894427191,0.774596669,0.565685425,0
0,0.447213595,0.692820323,0.824621125,0.894427191,0.916515139,0.894427191,0.824621125,0.692820323,0.447213595,0
0,0,0.529150262,0.692820323,0.774596669,0.8,0.774596669,0.692820323,0.529150262,0,0
0,0,0,0.447213595,0.565685425,0.6,0.565685425,0.447213595,0,0,0
0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,0,0,0,0,0,0

我能够像这样阅读它

sphere_data <- read.csv (file="sphere.csv", head=FALSE, sep=",")

然后我尝试使用wireframe

library(lattice)
wireframe(z~x+y,sphere_data)

但这给了我一个错误。特别是,口译员似乎对z表达的内容感到窒息z~x+y。我不知道那个表达是什么意思,但我在互联网上的其他例子中找到了它。

编辑 根据shujaa的建议,dput(sphere_data)返回

structure(list(V1 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L), V2 = c(0, 0, 0, 0.447213595, 0.565685425, 0.6, 0.565685425,
0.447213595, 0, 0, 0, 0), V3 = c(0, 0, 0.529150262, 0.692820323,
0.774596669, 0.8, 0.774596669, 0.692820323, 0.529150262, 0, 0,
0), V4 = c(0, 0.447213595, 0.692820323, 0.824621125, 0.894427191,
0.916515139, 0.894427191, 0.824621125, 0.692820323, 0.447213595,
0, 0), V5 = c(0, 0.565685425, 0.774596669, 0.894427191, 0.959166305,
0.979795897, 0.959166305, 0.894427191, 0.774596669, 0.565685425,
0, 0), V6 = c(0, 0.6, 0.8, 0.916515139, 0.979795897, 1, 0.979795897,
0.916515139, 0.8, 0.6, 0, 0), V7 = c(0, 0.565685425, 0.774596669,
0.894427191, 0.959166305, 0.979795897, 0.959166305, 0.894427191,
0.774596669, 0.565685425, 0, 0), V8 = c(0, 0.447213595, 0.692820323,
0.824621125, 0.894427191, 0.916515139, 0.894427191, 0.824621125,
0.692820323, 0.447213595, 0, 0), V9 = c(0, 0, 0.529150262, 0.692820323,
0.774596669, 0.8, 0.774596669, 0.692820323, 0.529150262, 0, 0,
0), V10 = c(0, 0, 0, 0.447213595, 0.565685425, 0.6, 0.565685425,
0.447213595, 0, 0, 0, 0), V11 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L)), .Names = c("V1", "V2", "V3", "V4", "V5",
"V6", "V7", "V8", "V9", "V10", "V11"), class = "data.frame", row.names = c(NA,
-12L))

csv 中的数据有 11x11 个值。这些值应该表示一个点的高度(比如 z 轴)。csv 中第一行的所有值都在同一个 x 轴上,第二行的值也是如此,直到最后一行的值。每行的第一个值在相同的 y 轴上,对于每行的第二个值也是如此,直到最后一行的值。

4

1 回答 1

2

我只是使用它来工作

sphere_data <- as.matrix(sphere_data)
wireframe(sphere_data)

希望有帮助。

于 2012-09-27T17:49:42.153 回答