最近在用ggrepel,这里记录一些官网教程中的概要。与其去搜答案,不如过一遍软件的示例,大部分的问题都能迎刃而解。更详细的内容可参照官网教程:https://ggrepel.slowkow.com/articles/examples.html
>基本用法<
相比于geom_text()增加标签,它主要的作用就是让标签和数据点分离。其中标签的文字用aes中的label定义,之后就是调整文字标签的位置和连线的形式。
>只显示一部分标签<
通过设置空字符串""实现。
实测用NA也可以实现,NA标签的点在geom_text_repel中会被视为missing value,会产生warning。
>设置绘制标签的区域<
通过设置xlim和ylim实现。
>对齐标签<
垂直左中右对齐可以通过hjust(0-左对齐,0.5居中,1-右对齐)实现,direction="y"设定扩展方向为垂直方向。这里的数据点都是对齐的,意味着标签的起始位置相同,若这些点未对齐,标签的起始位置也不一样,就无法做到对齐。这时可以设置xlim或者通过多个nudge_x调整标签的起始位置。以下有几个示例都是通过设定多个nudge_x或nudge_y调整标签位置,其实一个快捷的方式是通过设置xlim或者ylim实现。
水平的对齐略微复杂,nudge_x/nudeg_y可以设置单个值或者多个值,对全部标签或者每一个标签进行位置的调整。这里计算每个点需要调整的值,将其设置为nudge_y实现。相应的扩展方向需要设置为水平(direction="x")。
如果不介意标签的方向,可以将标签旋转90度,并设置hjust。注意angle只能为90,另外force_pull=0是非常tricky的设置,否则标签之间会有重叠。
根据数据点的位置设置左对齐或者右对齐。
长字符串(句子)的左右对齐,通过添加多个hjust设置完成。
使用geom_label_repel可以添加边框。
>加jitter<
数据点为了避免重合,一般会加jitter,这样标签就对不上数据点了,所以需要统一为数据点和标签加jitter。这里使用的是position_quasirandom()函数。
>其他<
控制标签和数据点之间的连线,主要通过segment系列的参数设置,能在vignettes/examples.Rmd或官网中找到。参数众多,能做非常细致的调整,但目前并未用到,先略未敬。
一部分设置字体大小等aes的参数并未在R的帮助文件中详细给出,
同样能在vignettes/examples.Rmd或官网中可以找到。
最后是一点使用的经验,使用时打开verbose=T,提高max.time和max.iter,多次运行挑选出满意的效果。设置seed能保证每次作图的结果相同。
2023/01/26