R语言无需第三方包将两个矩阵绘制到同一张散点图的实现方法
R语言基础绘图实现两个矩阵散点同图展示
直接使用R原生基础绘图系统的plot()与points()函数组合即可实现需求,无需调用任何第三方扩展包,实现逻辑如下:
- 先计算两个矩阵第一列、第二列所有值的取值范围,确保坐标轴能覆盖全部数据点
- 调用
plot()绘制第一个矩阵的散点,配置坐标轴范围与基础样式 - 调用
points()在已有画布上叠加第二个矩阵的散点,设置不同的点样式/颜色区分两组数据 - 可选添加图例增强可读性
完整可运行代码
# 定义输入矩阵 x1 = matrix(data = c(1, 3, 4, 5, 5, 3, 3, 1), nrow = 4, ncol= 2, byrow = TRUE) x2 = matrix(data = c(-1, -4, 3, 7, -2, 2, 4, -1), nrow = 4, ncol= 2, byrow = TRUE) # 计算坐标轴全局范围 x_range <- range(c(x1[,1], x2[,1])) y_range <- range(c(x1[,2], x2[,2])) # 绘制x1矩阵散点 plot( x = x1[,1], y = x1[,2], xlim = x_range, ylim = y_range, xlab = "第一列取值", ylab = "第二列取值", col = "blue", pch = 16, main = "双矩阵散点对比图" ) # 叠加x2矩阵散点 points(x = x2[,1], y = x2[,2], col = "red", pch = 17) # 添加图例 legend( "topright", legend = c("x1矩阵", "x2矩阵"), col = c("blue", "red"), pch = c(16, 17) )
若不需要区分两个矩阵的散点来源,可直接将两个矩阵按行合并后单次调用
plot()即可,简化代码如下:
all_data <- rbind(x1, x2) plot(all_data[,1], all_data[,2], xlab = "第一列取值", ylab = "第二列取值")
内容的提问来源于stack exchange,提问作者GeorgeR
相关产品推荐
相关产品推荐

