r读取shape文件可视化_【R】提取 PCA 结果并利用 ggplot2 进行可视化
最近,師妹在利用 R 對 PCA 結果進行可視化時遇到了一些問題,她說不太明白 ggplot2 怎么用在 PCA 結果上,那就安排吧。
PCA、PCoA、NMDS、RDA 等圖形的本質是散點圖,既然是散點圖,那在可視化的時候把它們當作散點圖就行了,不用管是什么算法的結果。我認為最重要的一步是能夠看懂這些多元統計分析的輸出結果,并從中提取出用于畫圖的數據,然后將這些數據和自己的分組信息進行組合。完成數據的提取和組合,剩下的技術問題就都不是問題了。
?
我一直認為:「數據統計分析及可視化最重要的是理清楚數據結構」!
?
rm(list = ls())
library(tidyverse)
library(ggplot2)
library(ggsci)
library(Cairo)
進行PCA計算
pca = prcomp(iris[1:4])
提取每個樣本對應的PCA坐標
pca.res = pca[["x"]] %>%
as.data.frame()
將PCA結果和樣本分組信息進行匹配
pca.res = cbind(pca.res, iris[,5])
colnames(pca.res)[5] = 'group'
計算每個主成分對方差的解釋度
pca.var = pca$sdev^2 %>%
as.data.frame()
pca.var$var = round(pca.var$. / sum(pca.var) * 100, 2) # 計算各主成分所占百分比
pca.var$pc = colnames(pca.res)[1:(ncol(pca.res)-1)]
繪制碎石圖看每個主成分的解釋量
ggplot(pca.var, aes(pc, var, fill = pc)) +
geom_bar(stat = 'identity')+
scale_fill_igv()+
scale_y_continuous(expand = c(0,0)) +
theme_bw() +
labs(x = '主成分',
y = '主成分解釋量(%)')`
進行PCA可視化
p = ggplot(pca.res, aes(PC1, PC2, color = group, shape = group))+
# 選擇X軸Y軸并映射顏色和形狀
geom_point(size = 3)+ # 畫散點圖并設置大小
geom_hline(yintercept = 0,linetype="dashed") + # 添加橫線
geom_vline(xintercept = 0,linetype="dashed") + # 添加豎線
scale_color_igv()+ # 設置顏色,此處為Integrative Genomics Viewer配色
theme_bw() + # 加上邊框
stat_ellipse(level = 0.95)+ # 添加置信橢圓
# 自動提取主成分解釋度進行繪圖
labs(x = paste('PC1(', pca.var$var[1],'%)', sep = ''),
y = paste('PC2(', pca.var$var[2],'%)', sep = '')) +
theme(legend.position = c(0.85,0.85)) # 設置圖例位置,此處為相對位置
p
保存成PDF格式
ggsave(p, filename = 'figures/PCA.pdf',
width = 5, height = 5, # 設置長寬
device = cairo_pdf, # 使用cairo輸出設備
family = 'Song') # 設置輸出字體為宋體`
總結
以上是生活随笔為你收集整理的r读取shape文件可视化_【R】提取 PCA 结果并利用 ggplot2 进行可视化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql model only_ful
- 下一篇: java 定时删除_Java编写定时删除