Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R语言ggplot2给PCA散点图结果上添加水平和垂直误差线

R语言ggplot2给PCA散点图结果上添加水平和垂直误差线

作者头像
用户7010445
发布于 2021-11-08 07:01:37
发布于 2021-11-08 07:01:37
1.2K01
代码可运行
举报
运行总次数:1
代码可运行

image.png

公众号后台有读者留言问这个图的实现办法,这个图相比于普通的PCA散点图是多了一个垂直和水平的误差线,这个如何实现之前还没有尝试过,所以查了查资料,找到了一个参考链接

https://cran.r-project.org/web/packages/SIBER/vignettes/Plot-SIA-ggplot2.html

按照这个参考链接的代码 我们试试。用之前提到的小麦种子数据做示例数据

加载需要用到的包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggplot2)
library(ggforce)
library(tidyverse)

读取数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df<-read.csv("Seed_Data.csv")
df$target<-paste0("cultivar",df$target)

主成分分析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.pca<-prcomp(df[,1:7],scale. = T)

提取主成分分析的作图数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df.pca$x %>% as.data.frame() %>% 
  mutate(group=df$target) -> pca.result

计算PCA结果的平均值和标准差

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pca.result %>% 
  group_by(group) %>% 
  summarise(pc1m=mean(PC1),
            pc1sd=sd(PC1),
            pc2m=mean(PC2),
            pc2sd=mean(PC2)) -> pca.result.a

初步的草图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggplot()+
  geom_errorbar(data=pca.result.a,
                aes(x=pc1m,
                    ymin=pc2m-1.96*pc2sd,
                    ymax=pc2m+1.96*pc2sd,
                    color=group),
                width=0.2)+
  geom_errorbarh(data = pca.result.a,
                 aes(y=pc2m,
                     xmin=pc1m-1.96*pc1sd,
                     xmax=pc1m+1.96*pc1sd,
                     color=group))+
  stat_ellipse(data=pca.result,
               geom="polygon",
               aes(x=PC1,
                   y=PC2,
                   color=group,
                   fill=group),
               alpha=0.2) -> p
p

image.png

从图中提取作图数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggplot_build(p)$data[[1]] %>% 
  select(colour,x,ymin,ymax) %>% 
  pivot_longer(cols = c(ymin,ymax)) %>% 
  rename("group"="colour",
         "x" ="x",
         "y"="value") %>% 
  select(x,y,group) -> tmp.1

ggplot_build(p)$data[[2]] %>% 
  select(colour,y,xmin,xmax) %>% 
  pivot_longer(cols = c(xmin,xmax))%>% 
  rename("group"="colour",
         "y" ="y",
         "x"="value") %>% 
  select(x,y,group) -> tmp.2

tmp<-rbind(tmp.1,tmp.2)

最终作图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ggplot()+
  geom_mark_ellipse(data=tmp,
                    aes(x=x,y=y,
                        fill=group),
                    expand = unit(0,"mm"),
                    color="white")+
  geom_errorbar(data=pca.result.a,
                aes(x=pc1m,
                    ymin=pc2m-1.96*pc2sd,
                    ymax=pc2m+1.96*pc2sd),
                width=0.2)+
  geom_errorbarh(data = pca.result.a,
                 aes(y=pc2m,
                     xmin=pc1m-1.96*pc1sd,
                     xmax=pc1m+1.96*pc1sd))+
  theme_bw()+
  labs(x="PC1 (42.8%)",y="PC2(37.9%)")+
  geom_point(data=pca.result.a,
             aes(x=pc1m,y=pc2m),
             size=3)

image.png

欢迎大家关注我的公众号

小明的数据分析笔记本

小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
跟着Global Change Biology学作图:R语言ggplot2点线图(1)
本地pdf Global Change Biology - 2022 - Feng - Changes in plant inputs alter soil carbon and microbial communities in forest.pdf
用户7010445
2023/01/06
6420
跟着Global Change Biology学作图:R语言ggplot2点线图(1)
跟着Nature Communications学作图:R语言ggplot2散点加误差线展示响应比(Response ratio)
https://www.nature.com/articles/s41467-020-16881-7#Sec15
用户7010445
2023/01/06
8470
跟着Nature Communications学作图:R语言ggplot2散点加误差线展示响应比(Response ratio)
跟着Nature学作图:R语言ggplot2柱形图添加误差线和频率分布直方图
https://www.nature.com/articles/s41586-022-05275-y
用户7010445
2023/01/06
1.1K0
跟着Nature学作图:R语言ggplot2柱形图添加误差线和频率分布直方图
跟着GlobalChangeBiology学作图:R语言ggplot2点线图(2)给分面添加注释
本地pdf Global Change Biology - 2022 - Feng - Changes in plant inputs alter soil carbon and microbial communities in forest.pdf
用户7010445
2023/01/06
7010
跟着GlobalChangeBiology学作图:R语言ggplot2点线图(2)给分面添加注释
R语言之可视化①误差棒
本教程介绍如何使用R软件和ggplot2包创建带有误差棒的图形。 可以使用以下函数创建不同类型的错误栏:
用户1359560
2018/12/05
2.7K0
R语言之可视化①误差棒
跟着Nature学作图:R语言ggplot2分组折线图添加误差线
https://github.com/GRONINGEN-MICROBIOME-CENTRE/DMP
用户7010445
2022/05/23
2.5K0
跟着Nature学作图:R语言ggplot2分组折线图添加误差线
跟着Nature Communications学作图:R语言ggplot2气泡图组合水平柱形图完整示例
https://www.nature.com/articles/s41467-022-31724-3
用户7010445
2023/01/06
7370
跟着Nature Communications学作图:R语言ggplot2气泡图组合水平柱形图完整示例
跟着Nature学作图:R语言ggplot2频率分布直方图和散点图添加误差线
https://www.nature.com/articles/s41586-022-05275-y
用户7010445
2023/01/06
7440
跟着Nature学作图:R语言ggplot2频率分布直方图和散点图添加误差线
跟着Science Advances学画图:R语言ggplot2画柱形图如何让屁股朝右
今天推文模仿的图片是来自于论文 Landscapes of bacterial and metabolic signatures and their interaction in major depressive disorders。有读者在公众号的后台留言问 论文中Figure2中的A图如何实现 image.png image.png 今天的推文就介绍一下,因为A图的数据较多,我们来模仿B图,过程其实是一样的 image.png image.png 左边两幅图是柱形图叠加误差线还叠加了散点图 最右
用户7010445
2021/03/26
1.1K0
跟着Science Advances学画图:R语言ggplot2画柱形图如何让屁股朝右
跟着nature communications学绘图(9) ggplot2绘制误差线点图
❝本节来进行论文图表的复现;通过ggplot2绘制误差线点图 加载R包 library(tidyverse) library(ggprism) library(ggsci) 数据清洗 df <- read_tsv("F1-b.txt") %>% pivot_longer(-c(type,time)) %>% select(-name) %>% group_by(type,time) %>% summarise(value_mean=mean(value),sd=sd(value),
R语言数据分析指南
2022/09/21
5130
跟着nature communications学绘图(9) ggplot2绘制误差线点图
玩转数据地图系列之——地图上的迷你条形图
最近忙的厉害,产量下降的有点严重,感谢各位还没取关的小伙伴儿。 一周前更新了一篇数据地图上的气泡散点图的内容,不知怎地,这段时间就是跟地图死磕上了,今天还是数据地图,不过是在数据地图上呈现条形图、柱形图。 之前的一篇因为有现成的作图包支持,geom_scatterpie函数不用花费太大力气就解决了数据地图上的气泡散点图问题。 可是到目前为止我还没有发现支持对应坐标位置的条形图、柱形图,这一篇是参考了知乎上大神提供的思路。 加载包: library(maptools) library(ggplot2) lib
数据小磨坊
2018/04/11
2.7K1
玩转数据地图系列之——地图上的迷你条形图
跟着Nature Genetics 学画图:R语言ggplot2散点图展示PCA结果
这里直接读入excel文件用到的是readxl包中的read_excel()函数,需要制定
用户7010445
2021/05/07
1.6K0
ggplot2|从0开始绘制折线图
话说“一图胜千言”,在各类数据分析报告中经常会看见各种各样的图形,例如折线图、条形图、箱线图、点图等。
生信补给站
2020/08/06
4.2K0
R语言ggplot2环形图小例子
https://www.r-graph-gallery.com/128-ring-or-donut-plot.html
用户7010445
2020/03/03
4.7K0
ggplot2轻松绘制误差线点图与箱线图
R语言数据分析指南
2023/08/18
5790
ggplot2轻松绘制误差线点图与箱线图
ggplot2优雅的给图形添加渐变背景
❝本节来介绍如何给图形添加渐变色背景,通过两个案例来进行展示; 加载R包 library(tidyverse) library(grid) library(RColorBrewer) library(ggh4x) library(scales) library(aplot) 导入数据 sports <- read_tsv("sports.xls") 数据清洗 plot_data <- sports %>% select(exp_men, exp_women, sports) %>% drop
R语言数据分析指南
2022/09/21
1.2K0
ggplot2优雅的给图形添加渐变背景
ggplot barplot and error bars
关于这个误差bar的添加,主要的问题其实是计算的问题,需要max和min,如果存在分组的问题,那么就需要使用按照分组再计算max和min,然后再在aes中使用。 love&peace
火星娃统计
2020/09/15
1.6K0
ggplot barplot and error bars
跟着Nature学作图:R语言ggplot2散点图和柱形图完整示例(Extended Fig3)
https://www.nature.com/articles/s41586-022-05275-y
用户7010445
2023/01/06
6780
跟着Nature学作图:R语言ggplot2散点图和柱形图完整示例(Extended Fig3)
跟着Nature Plants学作图:R语言ggplot2柱形图误差线展示不同甜橙品种柠檬酸含量
https://www.nature.com/articles/s41477-021-00941-x
用户7010445
2023/11/02
2980
跟着Nature Plants学作图:R语言ggplot2柱形图误差线展示不同甜橙品种柠檬酸含量
跟着NatureMetabolism学作图:R语言ggplot2画热图展示基因表达量
https://www.nature.com/articles/s42255-022-00629-2#Sec15
用户7010445
2023/01/06
1.3K0
跟着NatureMetabolism学作图:R语言ggplot2画热图展示基因表达量
推荐阅读
相关推荐
跟着Global Change Biology学作图:R语言ggplot2点线图(1)
更多 >
交个朋友
加入[后端] 腾讯云技术交流站
后端架构设计 高可用系统实现
加入前端工作实战群
前端工程化实践 组件库开发经验分享
加入云原生工作实战群
云原生落地实践 技术难题攻坚探讨
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档