当标签靠近绘图边界时,如何防止geom_text_repel()显示标签的一部分。这是一个facet_grid的例子,例如在chr3方面中,“ ZNF717”顶部的标签未完全显示。
带有强制20个构面和长标签的mtcar的示例:
mtcars %>%
rowwise() %>%
mutate(label="test_label") %>%
mutate(facet=runif(n = n(),min = 1,max=20)) %>%
ggplot(aes(x=disp,y=hp,label=label)) +
geom_text_repel() +
facet_grid(~facet)
答案 0 :(得分:0)
每个面板都是独立的,默认情况下,绘图仅限于绘图区域。可以通过修改默认坐标来覆盖它。在这个极端的例子中,需要对两行使用facet_wrap()。我还减小了标签的字体大小,并限制了斥力,以便它只能垂直移动标签。 (显然,刻度标签和面板名称在实际使用中需要进一步调整。)
library(ggplot2)
library(ggrepel)
library(dplyr)
mtcars %>%
rowwise() %>%
mutate(label="test_label") %>%
mutate(facet=runif(n = n(),min = 1,max=20)) %>%
ggplot(aes(x=disp,y=hp,label=label)) +
geom_text_repel(direction = "y", hjust = 0.5, size = 2) +
facet_wrap(~facet, nrow = 2) +
coord_cartesian(clip = "off")
上面的代码回答了问题,但至少在mtcars
示例中,由于几何图形在逐个面板的基础上工作,排斥力无法防止延伸到相邻面板中的标签重叠。令人惊讶的是,另存为位图格式时,左侧会发生一些意外的裁剪,但保存为PDF时(至少在RStudio中)则不会。
另一种选择是通过使用angle
美学来旋转标签或缩写用于标签的文本来确保标签适合可用空间。