【问题标题】:Justifying lines of text within individual ggrepel labels在单个 ggrepel 标签中对齐文本行
【发布时间】:2019-01-30 19:36:50
【问题描述】:

我有一个情节,我用多行 ggrepel 标签标记元素。我想在其中一些中右对齐并在其他中左对齐。见例子:

p <- ggplot() +
  coord_cartesian(xlim=c(0,1), ylim=c(0,1)) +
  theme_void()
p

labelInfo <- data.frame(x=c(0.45,0.55), y=c(0.5,0.5), 
                        g=c("I'd like very much to be\nright justified","And I'd like to be\nleft justified"))

p + geom_label_repel(data=labelInfo, aes(x,y,label=g), 
                     box.padding = 0.5, point.padding = 0.75, 
                     nudge_x = c(-0.05,0.05), nudge_y = 0, direction="x",
                     arrow=arrow(length=unit(2,"mm"), ends="last", type="closed"))

如果我使用 ggplot2 注释来执行此操作,我会这样做,这会产生我想要的左/右对齐方式:

p + annotate("text", label="I'd like very much to be\nright justified", x=0.45, y=0.5, hjust=1) +
  annotate("text", label="And I'd like to be\nleft justified", x=0.55, y=0.5, hjust=0)

如何使用ggrepel 标签实现这一点?

谢谢!

【问题讨论】:

标签: r ggplot2 ggrepel


【解决方案1】:

此问题现已在 ggrepel 的开发版本(版本 0.8.1.9000)中得到解决。

library(ggplot2)
devtools::install_github("slowkow/ggrepel") 

p <- ggplot() +
  coord_cartesian(xlim=c(0,1), ylim=c(0,1)) +
  theme_void()
p

labelInfo <- data.frame(x=c(0.45,0.55), y=c(0.5,0.5), 
                        g=c("I'd like very much to be\nright justified","And I'd like to be\nleft justified"))

p + geom_label_repel(data=labelInfo, aes(x,y,label=g), hjust=c(1,0),
                     box.padding = 0.5, point.padding = 0.75, 
                     nudge_x = c(-0.05,0.05), nudge_y = 0, direction="x",
                     arrow=arrow(length=unit(2,"mm"), ends="last", type="closed"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 2012-05-24
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多