nature genetics图表复现-自定义绘制散点图
自定义 绘制 Nature 图表 复现 散点图 genetics
2023-06-13 09:16:05 时间
❝本节来复现「nature genetics」上的一张图,自定义绘制误差线图;下面小编就通过一个详细的案例介绍如何绘制此图;❞
图形展示
❝此图作为基础图形系列,但是又在基础图形的基础上做了一点细微的变化,如误差线不展示「ymin&ymax」因此直接添加几何对象完成不能实现,此外也通过自定义绘制线条来进行注释以及Y轴标题添加上标;那么小编下方案例代码就来简单介绍如何用代码来解决这三个问题 ❞
加载R包
library(tidyverse)
library(readxl)
library(ggtext)
library(ggsci)
导入数据
df1 <- read_excel("41588_2022_1184_MOESM5_ESM.xlsx",sheet = 4)
定义因子
df1$taxon <- factor(df1$taxon,levels=c("nicaraguensis","luxurians","diploperennis",
"perennis","huehuetenangensis","mexicana",
"parviglumis","TST","TEM"))
定义线条位置信息
p_value1 <- tibble(
x = c("nicaraguensis","nicaraguensis","parviglumis","parviglumis"),
y= c(7.8,7.8,7.8,7.8))
p_value2 <- tibble(
x = c("perennis","perennis","TEM","TEM"),
y=c(7.8,8.2,8.2,0.8))
p_value3 <- tibble(
x = c("TST","TST","TEM","TEM"),
y=c(0.7,0.7,0.7,0.7))
数据可视化
df1 %>% mutate(SNP=SNP/100000) %>%
ggplot(aes(taxon,SNP))+
geom_jitter(width = 0.1,color="grey")+
# stat_boxplot(geom = "errorbar", aes(ymin = ..ymax..),width=0.1) +
# stat_boxplot(geom = "errorbar", aes(ymax = ..ymin..),width=0.1)+
stat_boxplot(outlier.shape = NA,width=0,aes(color=taxon,fill=taxon),
show.legend = F) + # 添加误差线
stat_summary(aes(taxon,SNP,color=taxon,fill=taxon),pch=22,
fun.y="mean",geom="point",size=4,
show.legend = F)+ # 添加均值
# 自定义绘制线条
geom_line(data = p_value1,aes(x = x, y = y,group=1))+
geom_line(data = p_value2,aes(x = x, y = y,group=1))+
geom_line(data = p_value3,aes(x = x, y = y,group=1))+
labs(x=NULL,y="Number of taxon-specific SNPs (x10<sup>5</sup>)")+
scale_y_continuous(limits = c(0,8.5),breaks = seq(0,8.5,2.5))+
scale_fill_npg()+
scale_color_npg()+
theme_classic()+
theme(axis.text.x=element_text(angle = 90,vjust = 0.5,hjust=1,size=10,
color="black",face="bold"),
axis.text.y=element_text(size=10,color="black"),
axis.title.y= element_markdown(color="black",size=11,face="bold",
margin = margin(r=10)))+
annotate("text",x =7,y =8.3,label="**",size = 6,color = "#22292F")
相关文章
- Jetpack-Compose 学习笔记(三)—— Compose 的自定义“View”
- 自定义控件_绘制太极(拖动)
- ffmpeg 自定义IO
- C# 在自定义的控制台输出重定向类中整合调用方信息
- 什么年代还在用传统 Pjax? —— 自定义 Pjax 提升页面加载速度
- 学习LAMBDA函数:将Excel公式转换为自定义函数(下)
- 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
- 【Android 性能优化】布局渲染优化 ( 过渡绘制 | 背景设置产生的过度绘制 | Android 系统的渲染优化 | 自定义布局渲染优化 )
- 【Android 内存优化】自定义组件长图组件 ( 获取图像宽高 | 计算解码区域 | 设置图像解码属性 复用 像素格式 | 图像绘制 )
- 【Android Gradle 插件】自定义 Gradle 任务 ⑮ ( Gradle 自带 Zip 任务使用 | Zip 任务简介 | 代码示例 )
- VScode生成自定义Vue3模板
- Linux下自定义桌面:美化你的工作空间(linux桌面设置)
- 如何设置 GNOME 显示自定义幻灯片
- 编译Linux操作系统:从源代码到自定义内核构建全过程(编译linux操作系统)
- destoon设置自定义搜索的方法
- DevExpress实现自定义TreeListNode的Tooltip的方法