美文网首页
【R语言】多边形PCA图

【R语言】多边形PCA图

作者: 研究僧小蓝哥 | 来源:发表于2020-08-17 17:45 被阅读0次
    ​rm(list = ls())
    library(tidyverse)
    library(plyr)
    library(ggplot2)
    library(ggsci)
    
    pca = prcomp(iris[,1:4]) # 进行PCA计算
    
    var = pca[["sdev"]]^2 # 提取解释度
    pc1 = round(var[1]/sum(var) * 100, 2)
    pc2 = round(var[2]/sum(var) * 100, 2)
    
    res.df = pca[["x"]] %>%
            as.data.frame() %>%
            mutate(Species = iris$Species)
    

    椭圆形

    # 置信椭圆
    ggplot(res.df, aes(PC1, PC2, color = Species, shape = Species)) +
            geom_point(size = 2)+
            stat_ellipse(level = 0.95)+ 
            scale_color_igv() +
            scale_shape_manual(values = c(15,16,17)) +
            theme_bw()+
            labs(x = paste('PC1(',pc1,'%)',sep = ''),
                 y = paste('PC2(',pc2,'%)',sep = '')) +
            theme(legend.position = c(0.86,0.85),
                  legend.title = element_blank(),
                  legend.background = element_blank(),
                  axis.text = element_text(color = 'black'),
                  axis.title = element_text(color = 'black'))
    

    多边形

    # 多边形
    group_border = ddply(res.df, 'Species', function(df) df[chull(df[[1]], df[[2]]), ])
    
    ggplot(res.df, aes(PC1, PC2, color = Species, fill = Species)) +
            geom_polygon(data = group_border, alpha = 0.4, show.legend = F) +
            geom_point(aes(shape = Species), size = 2)+
            scale_color_igv() +
            scale_shape_manual(values = c(15,16,17)) +
            theme_bw()+
            labs(x = paste('PC1(',pc1,'%)',sep = ''),
                 y = paste('PC2(',pc2,'%)',sep = '')) +
            theme(legend.position = c(0.86,0.85),
                  legend.title = element_blank(),
                  legend.background = element_blank(),
                  axis.text = element_text(color = 'black'),
                  axis.title = element_text(color = 'black'))
    

    相关文章

      网友评论

          本文标题:【R语言】多边形PCA图

          本文链接:https://www.haomeiwen.com/subject/ewsxjktx.html