答疑| ggplot 绘制火山图并添加文字标签

简介: 答疑| ggplot 绘制火山图并添加文字标签

开始作图


rm(list = ls())
setwd("F:/HJH/mzbj/cell/2021.4.12")
library(RColorBrewer)
library(ggrepel) #标签用
df <- read.csv("df.csv",row.names = 1) #导入数据,第一列作为行名
#确定是上调还是下调,用于给图中点上色
df$threshold = factor(ifelse(df$P_value  < 0.05 & abs(df$fd) >= 0.25, ifelse(df$fd >= 0.25 ,'Up','Down'),'NoSignifi'),levels=c('Up','Down','NoSignifi'))
df$gene <- row.names(df) #添加一列基因名,以便备注
ggplot(df,aes(x=fd,y= -log10(P_value),color=threshold))+
  geom_point(data = df[df$P_value<0.05&abs(df$fd)>0.25,],size = 5)+ 
  geom_point(data = df[df$P_value>0.05|abs(df$fd)<0.25,],size = 4)+
  scale_color_manual(values=c("#4393C3","#00000033","#FC4E2A"))+#确定点的颜色
  geom_text_repel(
    data = df[df$P_value<0.05&abs(df$fd)>1,],
    aes(label = gene),
    size = 4.5,
    color = "black",
    segment.color = "black", show.legend = FALSE )+#添加关注的点的基因名
  ylab('-log10 (P_value)')+#修改y轴名称
  xlab('log2 (FoldChange)')+#修改x轴名称
  geom_vline(xintercept=c(-0.25,0.25),lty=3,col="black",lwd=0.5) +#添加横线|logFoldChange|>0.25
  geom_hline(yintercept = -log10(0.05),lty=3,col="black",lwd=0.5) +#添加竖线padj<0.05
  theme_classic(  # 主题设置,这个是无线条主题
    base_line_size = 1 # 坐标轴的粗细
  )+
  theme(axis.title.x = element_text(size = 15, 
                                    color = "black",
                                    face = "bold"),
       axis.title.y = element_text(size = 15,
                                    color = "black",
                                    face = "bold", 
                                    vjust = 1.9, 
                                    hjust = 0.5, 
                                    angle = 90),
        legend.title = element_blank(),
        legend.text = element_text(color="black", # 设置图例标签文字
                                   size = 10, 
                                   face = "bold"),
        axis.text.x = element_text(size = 13,  # 修改X轴上字体大小,
                                   color = "black", # 颜色
                                   face = "bold", #  face取值:plain普通,bold加粗,italic斜体,bold.italic斜体加粗
                                   vjust = 0.5, # 位置
                                   hjust = 0.5, 
                                   angle = 0), #角度
        axis.text.y = element_text(size = 13,  
                                   color = "black",
                                   face = "bold", 
                                   vjust = 0.5, 
                                   hjust = 0.5, 
                                   angle = 0) 
  )

出图

image.png



相关文章
|
安全 Java 数据安全/隐私保护
SpringBoot实现二维码扫码登录的原理与详细步骤
SpringBoot实现二维码扫码登录的原理与详细步骤
1104 1
|
前端开发 Android开发 容器
surfaceview组件的surfaceCreated()不被调用的解决方案
原文:surfaceview组件的surfaceCreated()不被调用的解决方案 有时候我们有需要在native层做在surfaceview的上下文中做渲染,这个时候只是提供了一个单独什么都不做的surfaceview。
4025 0
|
7月前
|
存储 人工智能 JSON
AI智能体内战终结者!A2A:谷歌开源的首个标准智能体交互协议,让AI用同一种“语言”交流
A2A是谷歌推出的首个标准化智能体交互协议,通过统一通信规范实现不同框架AI智能体的安全协作,支持多模态交互和长时任务管理,已有50多家企业加入生态。
637 0
AI智能体内战终结者!A2A:谷歌开源的首个标准智能体交互协议,让AI用同一种“语言”交流
|
9月前
|
机器学习/深度学习 人工智能 编解码
R1-Onevision:开源多模态推理之王!复杂视觉难题一键解析,超越GPT-4V
R1-Onevision 是一款开源的多模态视觉推理模型,基于 Qwen2.5-VL 微调,专注于复杂视觉推理任务。它通过整合视觉和文本数据,能够在数学、科学、深度图像理解和逻辑推理等领域表现出色,并在多项基准测试中超越了 Qwen2.5-VL-7B 和 GPT-4V 等模型。
347 0
R1-Onevision:开源多模态推理之王!复杂视觉难题一键解析,超越GPT-4V
|
5月前
|
存储 C++ 容器
unordered_set、unordered_multiset、unordered_map、unordered_multimap的介绍及使用
unordered_set是不按特定顺序存储键值的关联式容器,其允许通过键值快速的索引到对应的元素。在unordered_set中,元素的值同时也是唯一地标识它的key。在内部,unordered_set中的元素没有按照任何特定的顺序排序,为了能在常数范围内找到指定的key,unordered_set将相同哈希值的键值放在相同的桶中。unordered_set容器通过key访问单个元素要比set快,但它通常在遍历元素子集的范围迭代方面效率较低。它的迭代器至少是前向迭代器。前向迭代器的特性。
262 0
|
存储 缓存 监控
性能测试中关注的指标
性能测试关注多个层面的指标,包括系统层(CPU、内存、磁盘、网络)、中间件层(网关、数据库、缓存、MQ、分布式存储)、应用层(响应时间、吞吐量、应用资源、GC、错误信息)及业务层和发压机指标。这些指标帮助评估系统性能,识别潜在瓶颈,确保软件质量和用户体验。
862 5
|
7月前
|
域名解析 网络协议 安全
DNS服务器地址大全
DNS(域名系统)是互联网的“电话簿”,将域名解析为IP地址。选择优质DNS服务器可提升网络速度、降低延迟。以下是全球及中国各运营商的DNS服务器列表,包括公共DNS(如Google DNS、Cloudflare DNS)、中国电信、联通、移动等。根据地理位置、稳定性、安全性与隐私保护等因素选择适合的DNS服务器,优化上网体验。
19733 6
|
存储 SQL 关系型数据库
openGauss6.0单点企业版部署_openEuler22.03_x86
openGauss6.0单点企业版部署_openEuler22.03_x86
|
自动驾驶 5G 网络架构
|
Linux
linux系统如何使用GPT工具进行分区
linux系统如何使用GPT工具进行分区
656 2