c++ 显示三维散点图_R语言 | 3D散点图图

c323e8e640cf9874b6c5dc82459430c8.png

大部分情况下,我们使用二维的图像就足以展示我们的数据,但是也无法排出在一些特定的情况下,需要将数据在三维空间进行展示。

今天给大家介绍两个用来绘制三维散点图的R包。

rgl包

首先介绍的是rgl包的plot3d()函数

还是先来看一下这个函数的参数。

plot3d(x, y, z,
xlab, ylab, zlab, type = "p", col,
size, lwd, radius,
add = FALSE, aspect = !add,
xlim = NULL, ylim = NULL, zlim = NULL,
forceClipregion = FALSE, ...)

各参数意义:

  • x、y、z为绘制3D图3个坐标的向量;

  • xlab、ylab和zlab为x、y、z轴的标签;

  • type,p为点图、s为球面图、l为线图、h为透视线图;

  • col绘图应用的颜色;

  • size点的大小;

  • lwd线的宽度;

  • radius球的半径;

  • add是否向现存的图中添加数据;

  • aspect规定是否要调整图像中立体的显示比例;

  • xlim、ylim和zlim为3个轴的最大值。

接下来我们简单的绘制一个3D的散点图。

install.packages("rgl")library(rgl)
data(mtcars)
plot3d(mtcars$mpg,mtcars$hp,mtcars$wt,col = "red",size = 3)

运行完次命令之后,会自动打开一个窗口,生成一个可交互的3D散点图。

640?wx_fmt=gif

scatterplot3d包

scatterplot3d是一个专门用与绘制3D散点图的R包,其主要函数极为scatterplot3d()函数,还是先介绍该函数的参数。

scatterplot3d(x, y=NULL, z=NULL, color=par("col"), pch=par("pch"),
main=NULL, sub=NULL, xlim=NULL, ylim=NULL, zlim=NULL,
xlab=NULL, ylab=NULL, zlab=NULL, scale.y=1, angle=40,
axis=TRUE, tick.marks=TRUE, label.tick.marks=TRUE,
x.ticklabs=NULL, y.ticklabs=NULL, z.ticklabs=NULL,
y.margin.add=0, grid=TRUE, box=TRUE, lab=par("lab"),
lab.z=mean(lab[1:2]), type="p", highlight.3d=FALSE,
mar=c(5,3,4,3)+0.1, bg=par("bg"), col.axis=par("col.axis"),
col.grid="grey", col.lab=par("col.lab"),
cex.symbols=par("cex"), cex.axis=0.8 * par("cex.axis"),
cex.lab=par("cex.lab"), font.axis=par("font.axis"),
font.lab=par("font.lab"), lty.axis=par("lty"),
lty.grid=par("lty"), lty.hide=NULL, lty.hplot=par("lty"),
log="", ...)

各参数意义:

  • x、y、z为绘图的3个向量;

  • color绘制图像的颜色;

  • pch绘图中点的形状标签;

  • main为主标题;

  • sub为副标题;

  • xlim、ylim和zlim为3条轴的最大值;

  • xlab、ylab和zlab为3条轴的标签;

  • scale.y为y轴相对于x和z轴的比例;

  • angle为x和y轴之间的角度;

  • axis定义是否要绘出轴;

  • tick.marks定义是否绘制轴中坐标的间隔;

  • label.tick.marks定义是否绘出轴坐标间隔的标签;

  • x.ticklabs、y.ticklabs和z.ticklabs为3条轴坐标间隔的向量;

  • y.margin.add为y轴坐标轴标签与坐标间隔标签的间距;

  • grid是否绘制网格;

  • box是否绘制边框;

  • lab给出x和y轴坐标间隔的数量;

  • lab.z给出z轴坐标间隔的数量;

  • type定义图像的类型,p为点图、s为球面图、l为线图、h为透视线图;

  • highlight.3d定义是否要按照y的坐标给予图像中的点不同的颜色;

  • mar定义图像边界;

  • bg为背景颜色;

  • col.axis、col.grid和col.lab为轴、网格和标签的颜色;

  • cex.symbols、cex.axis和cex.lab为图标、轴和标签的大小;

  • font.axis和font.lab为轴和标签的字号;

  • lty.axis、lty.grid为轴和网格的线型。

接下来同样先绘制一个简单的3d散点图。

install.packages("scatterplot3d")library(scatterplot3d)
data(mtcars)
scatterplot3d(mtcars$mpg,mtcars$hp,mtcars$wt)

3ed7b20cdc960dda6d2d63724e7061fd.png

在很多时候我们可能无法直接的看出散点的空间分布,因此可以添加一条垂线,将三点映射到x和y轴平面上。

scatterplot3d(mtcars$mpg,mtcars$hp,mtcars$wt,pch=16,
highlight.3d=TRUE, type="h")

304339afa65e9544d96a68bc34fdd6c5.png

本推文只是简单的介绍了这两个R包,具体的图像绘制大家可以根据推文中给出的绘图参数自行调整优化。

94965b41b35a0dffbe35c8c6f89a0188.png

我就知道你在看?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值