三维散点图

作者

[编辑] 郑虎;

[审核] .

注记

Hiplot 网站

本页面为 Hiplot 3D Scatter 插件的源码版本教程,您也可以使用 Hiplot 网站实现无代码绘图,更多信息请查看以下链接:

https://hiplot.cn/basic/scatter-3d?lang=zh_cn

三维散点图是将多个定量变量运用于空间中的不同轴上,并将不同的变量组合成空间中的坐标,从而对三个定量变量的交互关系进行清晰的解释。

环境配置

  • 系统: Cross-platform (Linux/MacOS/Windows)

  • 编程语言: R

  • 依赖包: plot3D; ggplotify

# 安装包
if (!requireNamespace("plot3D", quietly = TRUE)) {
  install.packages("plot3D")
}
if (!requireNamespace("ggplotify", quietly = TRUE)) {
  install.packages("ggplotify")
}

# 加载包
library(plot3D)
library(ggplotify)

数据准备

载入数据为三个变量和分组。

# 加载数据
data <- read.delim("files/Hiplot/159-scatter-3d-data.txt", header = T)

# 整理数据格式
col_idx <- which(colnames(data) == "group")
data[, col_idx] <- as.factor(data[, col_idx])
shapes <- 19
shape_idx <- ""

# 查看数据
head(data)
      temp    pressure dtime group
1 41.11057  0.49351190     1    G1
2 35.23429  0.76636476     2    G1
3 26.58407  0.63885937     3    G1
4 34.76097 -0.08106332     4    G1
5 25.76521 -0.31731579     5    G1
6 20.30115 -1.91132873     6    G1

可视化

# 三维散点图
p <- as.ggplot(function() {
  plot3d <- scatter3D(data[, 1], data[, 2], data[, 3],
    pch = shapes, cex = 1,
    phi = 0, theta = 45, ticktype = "detailed",
    bty = "b2", colkey = FALSE, alpha = 1,
    xlab = colnames(data)[1], ylab = colnames(data)[2],
    zlab = colnames(data)[3],
    main = "3D-Scatter Plot",
    colvar = as.numeric(as.factor(data[, 4])),
    col = c("#e04d39","#5bbad6","#1e9f86")
  )
  
  legend("right", pch=19, legend = levels(data[, col_idx]),
         cex = 1.1, bty = 'n', xjust = 0.5, horiz = F,
         title = colnames(data)[col_idx],
         col = c("#e04d39","#5bbad6","#1e9f86"))
})

p
图 1: 三维散点图

图中分别将温度、压力、时间放置在 x(水平轴)、y(垂直轴)、z(透视轴)上,生成一幅三维散点图,直观发现三者变量间的相关关系及相关强弱程度。