新闻媒体-太阳成tyc7111cc
发稿时间:2020-07-03来源:天昊生物
前几期我们有介绍pca的多种绘图方法,这里我们接着介绍几种新的绘图方法:ggpubr包进行二维绘图和scatterplot3d包绘制3d图。
加载ggpubr包
in [1]:
一数据准备
in [2]:
-
df = read.csv('3d.pca.site.csv',header = t)
-
head(df)
out[2]:
aggregate 计算中心点in [3]:
-
df_mean = aggregate(cbind(pca1, pca2) ~ sub_group, data = df, fun = mean)
-
df_mean$group = c('b','b','c','c')
-
df_mean
out[3]:
合并数据
in [4]:
-
data = merge(df,setnames(df_mean,c('sub_group','pca1_mean','pca2_mean','group')))
-
data
out[4]:
二二维绘图
2.1 常规pca图
in [5]:
-
p <- ggplot(df, aes(x = pca1, y = pca2, colour = sub_group)) geom_point(size = 4)
-
p
out[5]:
增加形状
in [6]:
-
p1 = ggplot(df, aes(x = pca1, y = pca2, colour = sub_group,shape = group)) geom_point(size = 4)
-
p1
out[6]:
2.2 带中心点的pca图
in [7]:
-
q = p1 geom_point(data = df_mean, size = 6)
-
q
out[7]:
2.3 添加置信椭圆
in [8]:
-
r = q stat_ellipse( linetype = 2,level = 0.65,aes(group = sub_group, colour = sub_group))
-
r
out[8]:
2.4 指定杂志配色的绘图
in [9]:
-
# add group ellipses and mean points
-
# add stars
-
#
-
s = ggscatter(df, x = "pca1", y = "pca2",color = "sub_group", shape = "sub_group",palette = 'jco',ellipse = true, mean.point = true,star.plot = true)
-
s
out[9]:
2.5 连线放射
in [10]:
-
t = r geom_segment(data = data,mapping = aes(xend = pca1_mean, yend = pca2_mean))
-
t
out[10]:
2.6 外点连线
in [11]:
in [12]:
-
u = p geom_encircle(s_shape=1, expand=0)
-
u
out[12]:
2.7 波普样式
in [13]:
out[13]:
2.8 多个图形绘制在一起
in [14]:
-
ggarrange( p,p1,q , r ,s ,t ,u,v, ncol =2 , nrow =4,legend='top',common.legend = t)
out[14]:
三3d 绘图
in [15]:
-
# install.packages('scatterplot3d')
-
library(scatterplot3d)
in [16]:
in [17]:
-
color = c('red','black', 'blue','yellow')
-
colors=color[as.numeric(df$sub_group)]
-
colors
out[17]:
-
'red' 'red' 'red' 'red' 'black' 'black' 'black' 'black' 'blue' 'blue' 'blue' 'blue' 'blue' 'blue' 'yellow' 'yellow' 'yellow' 'yellow'
由于pca1和pca2的贡献度更高,因此我们需要面向我们的x轴和z轴对应pca1和pca2
in [18]:
-
scatterplot3d(x =pca1, y = pca3, z = pca2,main = "pca", xlab='pca1', ylab="", zlab='pca2',pch = 19, color = colors, cex.symbols = 1.2)
-
legend("right", col = unique(colors), pch = 19, xpd = t, cex = 1, ncol =1,legend = unique(df$sub_group), bty = "n")
out[18]:
往期相关链接:
1、r基础篇
;;
;;
;
;
;;
;
2、r进阶
;
;
;
3、数据提交
;
;
;
;
4、表达谱分析
;;
5、医学数据分析
;;;;