【R画图学习8.2】PCA图-3D

分享
源代码 2024-9-9 07:57:34 53 0 来自 中国
前面一个帖子我们学习了画根本的PCA图形,但是是二维的,本日我们学习绘制三维的,由于在有些paper中看到作者放的是三维的,实在也挺悦目的。主身分的盘算方法上一个帖子讲过了,就不多讲了。
盘算过主身分后,自己提取一下前面3个PC就成了。这个是我们本日的测试数据。
实在绘制3维图形的包也很多,我们先测试一个R内里常常用的scatter3D。
先绘制根本的三维PCA图。
scatter3D(x = plot.data$DC_1, y = plot.data$DC_3, z = plot.data$DC_2,
          xlab = "DC_1",  #设置x,y,z坐标轴的名称
          ylab = "DC_3",
          zlab = "DC_2",
          pch=21, #当pch取0~14时,其点为空心点,可以用col(颜色)参数设置其边框的颜色;当pch取15~20时,其点是实心点,可以用col参数设置其添补的颜色;当pch取21~25时,其点也是实心点,既可以用col参数设置边框的颜色,也可以用bg参数设置其内部的添补颜色。
          cex=1.5, #巨细
          col = "white", #设置点边框的颜色
          bg = plot.data$color #设置点的添补色
        )


2.png 我们下面调解一些详细的参数来控制细节。
scatter3D(x = plot.data$DC_1, y = plot.data$DC_3, z = plot.data$DC_2,
          xlab = "DC_1",  #设置x,y,z坐标轴的名称
          ylab = "DC_3",
          zlab = "DC_2",
          pch=21,#当pch取0~14时,其点为空心点,可以用col(颜色)参数设置其边框的颜色;当pch取15~20时,其点是实心点,可以用col参数设置其添补的颜色;当pch取21~25时,其点也是实心点,既可以用col参数设置边框的颜色,也可以用bg参数设置其内部的添补颜色。
          cex=2, #巨细
          col = "white", #设置点边框的颜色
          bg = plot.data$color, #设置点的添补色
          bty = "f", #控制绘制框的外型,可以为“b”, “b2”, “f”, “g”, “bl”, “bl2”, “u”, “n”此中的一个
          ticktype = "detailed", #表现坐标轴的刻度
          theta = -20, #旋转角度
          phi=0, #控制三维图的上下方向
          d=3, #透视转换强度
          cex.axis = 1.2, cex.lab = 2   #调控坐标轴刻度以及笔墨的巨细 
        )
legend(x=0.6,y=0.2,title =  "Group",legend=paste("G",c(1:10),sep=""),pch=21,cex=2,y.intersp=1,pt.bg = unique(plot.data$color),bg="white",bty="n")


3.png

下面我们再来测试2个可以画3维PCA的别的包。
install.packages('devtools')
devtools::install_github("AckerDWM/gg3D")
library(gg3D)
安装好gg3D包后,实在这个包是基于ggplot的,可以查察资助发现只有5个函数分别为:axes_3D 绘制3D坐标轴,axis_labs_3D 标记坐标刻度,labs_3D标记坐标标签,stat_3D 绘制多少对象,stat_wireframe绘制3D线框或3D曲面。
可以利用labs_3D添加轴标题。利用hjust,vjust和angle来实现精良的定位。
可以利用axis_labs_3D添加轴标签。标签表现每个轴的最小值和最大值。同样,可以利用hjust,vjust和angle来实现精良的定位。


#theta控制旋转,phi控制图的倾斜
theta <- -20 #方位角的度数
phi <- 0 # 渐近线
colors <- unique(plot.data$color)
names(colors) <- colors
ggplot(plot.data, aes(x = DC_1, y = DC_3, z = DC_2, color = color)) +
  axes_3D(theta=theta, phi=phi) +
  stat_3D(theta=theta, phi=phi) +
  labs_3D(theta=theta,
          phi=phi,
          hjust=c(1,1,0),
          vjust=c(1.5,1,-.2),
          labs=c("DC_1", "DC_2", "DC_3")) +
  scale_color_manual(values = colors,labels=unique(plot.data$Group))+
  theme_void()+
  theme(text = element_text(size = 20))


固然还有别的的包,比方scatterplot3d:
scatterplot3d(x = plot.data$DC_1,
              y = plot.data$DC_3,
              z = plot.data$DC_2,
              #color = plot.data$color,
              xlab = "DC_1", ylab = "DC_3", zlab = "DC_2",
              pch = 21,  #点的范例
              bg=plot.data$color, #对于pch 21-25 点的添补色
              angle = 120, #控制旋转角度
              scale.y = 0.7,
              grid=T,  #是否画网格线
              cex.symbols = 1.5, #点的巨细
              col.axis = "#444444",col.grid = "#CCCCCC",col.lab="black" #axis/grid/axis labels的颜色
)
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-19 11:42, Processed in 0.168271 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表