R|使用ggrepel添加文字标签

f060c7cc6ae912b2b5b3f0791f390e0c.png

最近在用ggrepel,这里记录一些官网教程中的概要。与其去搜答案,不如过一遍软件的示例,大部分的问题都能迎刃而解。更详细的内容可参照官网教程:https://ggrepel.slowkow.com/articles/examples.html

>基本用法<

相比于geom_text()增加标签,它主要的作用就是让标签和数据点分离。其中标签的文字用aes中的label定义,之后就是调整文字标签的位置和连线的形式。

25d9bb42624bd687789d8c1a50d5ede5.png

0859881888e9bf49e314b121279e233d.png

>只显示一部分标签<

通过设置空字符串""实现。

576c475ce6432a06175222b63449e69b.png

a262a083643b485f3e0a9545276dc956.png

实测用NA也可以实现,NA标签的点在geom_text_repel中会被视为missing value,会产生warning。

454855c5379b473a1f9086f46e31afcd.png

>设置绘制标签的区域<

通过设置xlim和ylim实现。

8219b223d72a1ab8d18a0270b9b42b97.png

93956f1f12193d43a01c7dacec0aa422.png

>对齐标签<

垂直左中右对齐可以通过hjust(0-左对齐,0.5居中,1-右对齐)实现,direction="y"设定扩展方向为垂直方向。这里的数据点都是对齐的,意味着标签的起始位置相同,若这些点未对齐,标签的起始位置也不一样,就无法做到对齐。这时可以设置xlim或者通过多个nudge_x调整标签的起始位置。以下有几个示例都是通过设定多个nudge_x或nudge_y调整标签位置,其实一个快捷的方式是通过设置xlim或者ylim实现。

8bbf6b32a4e044ee118ed6b325076345.png

bcab6ba98b00aaf389c6108b1c74341f.png

水平的对齐略微复杂,nudge_x/nudeg_y可以设置单个值或者多个值,对全部标签或者每一个标签进行位置的调整。这里计算每个点需要调整的值,将其设置为nudge_y实现。相应的扩展方向需要设置为水平(direction="x")。

6f24c060268a9f5642dd4f33f084af88.png

50c350385823d4d44cd8f0d56cfeb520.png

如果不介意标签的方向,可以将标签旋转90度,并设置hjust。注意angle只能为90,另外force_pull=0是非常tricky的设置,否则标签之间会有重叠。

2637852aefba3711ebf30c6a5b1f5200.png

e6e45d7c47602d29ac9e7b4e63f97446.png

根据数据点的位置设置左对齐或者右对齐。

a0a96eeac1d7bd5b52e77b4ce4813a5b.png

03458dcc251f358082f8363862790243.png

长字符串(句子)的左右对齐,通过添加多个hjust设置完成。

e691a44f9709f68a201d710fd11b417c.png

f9b201e3c96765747aeae6358fc758ad.png

e09fa2be0a5981a374faa5f484c6e74d.png

使用geom_label_repel可以添加边框。

668d095d762593e16ec17be2fdcef2a9.png

>加jitter<

数据点为了避免重合,一般会加jitter,这样标签就对不上数据点了,所以需要统一为数据点和标签加jitter。这里使用的是position_quasirandom()函数。

09fae427f6cf624ce6d882fc7e086281.png

6dc76e77e6deed029d052692601a4ce9.png

>其他<

7008e2e275c168f55b70976b41a4ea13.png

控制标签和数据点之间的连线,主要通过segment系列的参数设置,能在vignettes/examples.Rmd或官网中找到。参数众多,能做非常细致的调整,但目前并未用到,先略未敬。

4dabc22f0d237a11e4506d9bdbda56d6.png

一部分设置字体大小等aes的参数并未在R的帮助文件中详细给出,

9742f62861b8939c252813da36de95e1.png

同样能在vignettes/examples.Rmd或官网中可以找到。

d519d29d4191de529ded0f0bb15fe6f7.png

最后是一点使用的经验,使用时打开verbose=T,提高max.time和max.iter,多次运行挑选出满意的效果。设置seed能保证每次作图的结果相同。

2023/01/26

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
R语言中,可以使用一些常用的包来绘制火山图并对基因进行标签。下面是一个简单的示例代码: ```R # 安装和加载所需的包 install.packages("ggplot2") install.packages("ggrepel") library(ggplot2) library(ggrepel) # 创建示例数据 set.seed(123) genes <- paste0("Gene", 1:100) logFC <- rnorm(100, 2, 1) pvalue <- runif(100, 0, 0.01) data <- data.frame(Gene = genes, logFC = logFC, pvalue = pvalue) # 绘制火山图 ggplot(data, aes(x = logFC, y = -log10(pvalue))) + geom_point(size = 2, color = "grey", alpha = 0.5) + geom_point(data = subset(data, pvalue < 0.01 & abs(logFC) > 1), aes(color = "red"), size = 2) + geom_text_repel(data = subset(data, pvalue < 0.01 & abs(logFC) > 1), aes(label = Gene), size = 3, nudge_x = 0.2) + scale_color_manual(values = c("red" = "red")) + theme_minimal() + labs(x = "logFC", y = "-log10(p-value)", title = "Volcano Plot") ``` 这段代码使用了`ggplot2`包和`ggrepel`包来绘制火山图。首先,我们创建了一个示例数据集,其中包含基因名称、logFC值和p-value值。然后,使用`ggplot()`函数创建一个基础图层,并使用`geom_point()`函数添加散点图。接下来,使用`geom_point()`函数和`geom_text_repel()`函数分别在火山图上标记显著的基因。最后,使用`scale_color_manual()`函数设置基因标签的颜色,使用`theme_minimal()`函数设置图表主题,以及使用`labs()`函数设置轴标签和标题。 你可以根据自己的需求修改代码中的数据和绘图参数,以得到符合你要求的火山图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值