如何使用R做3D图?

时间:2015-12-06 01:19:49

标签: r plot

我想使用R绘制3D绘图。我的数据集是独立的,这意味着x,y和z的值不相互依赖。我想要的情节如下图所示:

Three dimensional plot

这个情节是由某人使用MATLAB绘制的。我怎么能用R做同样的情节?

2 个答案:

答案 0 :(得分:2)

由于您发布了图像文件,因此您似乎没有尝试制作三维散点图,而是使用连续色标的二维散点图来指示第三个变量的值。

选项1:对于这种方法,我会使用ggplot2

# make data
mydata <- data.frame(x = rnorm(100, 10, 3),
                     y = rnorm(100, 5, 10),
                     z = rpois(100, 20))
ggplot(mydata, aes(x,y)) + geom_point(aes(color = z)) + theme_bw()

哪个产生: enter image description here

选项2:要制作三维散点图,请使用cloud包中的lattice函数。

library(lattice)
# make some data
x <- runif(20)
y <- rnorm(20)
z <- rpois(20, 5) / 5
cloud(z ~ x * y)

enter image description here

答案 1 :(得分:0)

我通常使用基本绘图函数和一些帮助函数来执行这些类型的绘图,这些函数用于sinkr包中的颜色级别和颜色图例(您需要使用devtools包从GitHib安装)。

实施例

#library(devtools)
#install_github("marchtaylor/sinkr")
library(sinkr)

# example data
grd <- expand.grid(
  x=seq(nrow(volcano)),
  y=seq(ncol(volcano))
)
grd$z <- c(volcano)

# plot
COL <- val2col(grd$z, col=jetPal(100))

op <- par(no.readonly = TRUE)
layout(matrix(1:2,1,2), widths=c(4,1), heights=4)
par(mar=c(4,4,1,1))
plot(grd$x, grd$y, col=COL, pch=20)
par(mar=c(4,1,1,4))
imageScale(grd$z, col=jetPal(100), axis.pos=4)
mtext("z", side=4, line=3)
par(op)

结果:

enter image description here