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

猜你喜欢

转载自blog.csdn.net/lazysnake666/article/details/128768799
今日推荐