相关疑难解决方法(0)

ggplot 中的躲避/替换/排斥轴刻度标签?

如果没有大量工作,我想要的可能是不可能的,但也许有人有解决方案。我有一个如下图(当然这是一个过于简单的示例),其中我的刻度标签彼此非常接近:

dd <- data.frame(x=1:4, y=c(-10,10.5,10.6,10.7),
                 z = LETTERS[1:4])
library(ggplot2)
gg1 <- ggplot(dd, aes(x,y)) +
  geom_point() +
  geom_segment(x=0, aes(xend=x, y=y, yend=y)) +
  scale_y_continuous(breaks=dd$y, labels=dd$z)
Run Code Online (Sandbox Code Playgroud)

三个刻度标签(B、C、D)重叠的绘图

如果我真的想要,我可以导出为 SVG,将其转储到 Inkscape 中,然后手动将标签分开(甚至添加连接标签与精确 y 轴位置的小指示线):

B、C、D 手动移位的图片

如果能够以编程方式/自动执行类似的操作,那就太好了。我想:

  • ggrepel包(仅适用于图中的标签/文本 AFAIK)
  • directlabels包(它有一些放置选项,例如“first.bumpup”,可能适合这种情况/可修改)
  • 此处所示的和n.dodge参数check.overlap看起来有用且有趣,它们几乎可以处理这种情况,但会水平避开标签,如果标签长于几个字符,这会变得难看......guide_axisn.dodge

我很高兴有一个label.pos.nudge参数可以手动指定,以将标签沿轴的位置从相应的位置移开

r ggplot2

5
推荐指数
1
解决办法
999
查看次数

标签 统计

ggplot2 ×1

r ×1