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

前面一个帖子我们学习了画基本的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 #设置点的填充色

        )


我们下面调整一些详细的参数来控制细节。

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")



下面我们再来测试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的颜色

)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容