y通过多个字体边距/大小来偏移注释文本

时间:2018-03-02 13:57:58

标签: r ggplot2

我想将注释y值偏移字体文本边距的倍数。 (与HTML / CSS中的em单位类似)。

当然我可以在y参数中添加epsilon(试错法)。但我需要动态调整它,因为它是更大功能的一部分。

dataA <-
structure(list(dose = c(0.5, 1, 2, 3), len = c(10.605, 19.735, 
26.1, 45), sd = c(4.49976315166172, 4.41543643905882, 3.77415030520987, 
3.3166247903554)), row.names = c(NA, -4L), class = "data.frame", .Names = c("dose", 
"len", "sd"))
 x="dose";y="len"

Ploting

p <-ggplot(dataA, aes(x=get(x), y=get(y))) + 
        geom_point(aes(x=get(x), y=get(y)))

p + annotate("text", x = dataA[[x]], y = dataA[[y]], label = c("needs" ,"to go 1,5", "Text-margin up", "Thanks!"))

enter image description here

2 个答案:

答案 0 :(得分:2)

使用参数geom_text()(或nudge_y进行水平偏移)尝试nudge_x

dataA$label <- c("needs" ,"to go 1,5", "Text-margin up", "Thanks!")

ggplot(dataA, aes(dose, len)) + 
  geom_point() +
  geom_text(aes(label = label), nudge_y = 1.5)

enter image description here

答案 1 :(得分:0)

由于问题最初是关于annotate的,它不知道nudge_参数,因此这里是使用此功能的解决方案。

关键是使用vjust参数,help中没有清楚显示该参数:

p + annotate("text", x = dataA[[x]], y = dataA[[y]], 
             label = c("needs" ,"to go 1,5", "Text-margin up", "Thanks!"),
             vjust=-1.5)

但是实际上,在这种特定情况下,由于有多个位置需要注释,因此使用geom_text是更好的方法。