标签右侧的文本对齐方式将左侧指定位置

时间:2018-11-02 08:08:32

标签: r ggplot2

我要用annotate注释我的图,我想使文本右对齐,但要指定标签的位置,就好像它会保持左对齐一样。

这是一个可复制的示例以及我尝试的操作:

library(ggplot2)
library(stringr)

mydf <- data.frame(x = 0:15, 
                   y = seq(0, 0.75, 0.05))


text1 <- "first vs. five: 1.456"
text2 <- "second vs. \u2265 six long: 1.567"
text3 <- "third number: 123"

annotations <- str_c(c(text1, text2, text3), collapse = "\n")

ggplot(mydf, aes(x, y)) +
  geom_point() +
  annotate(geom = "label", x = 0.5, y = 0.975, 
           label = annotations, 
           hjust = "left", vjust = "top", size = 4.5)

这给出了标签位置的正确说明,但没有给出文本的正确对齐:

enter image description here

我尝试使用以下方法修复对齐方式,但这不起作用:

text1_long <- str_pad(text1, width = str_length(text2), side = "left", pad = " ")
text3_long <- str_pad(text3, width = str_length(text2), side = "left", pad = " ")

annotations_long <- str_c(c(text1_long, text2, text3_long), collapse = "\n")

ggplot(mydf, aes(x, y)) +
  geom_point() +
  annotate(geom = "label", x = 0.5, y = 0.975, 
           label = annotations_long, 
           hjust = "left", vjust = "top", size = 4.5)

enter image description here

我知道我可以执行以下操作,但是随后我必须以不同的方式指定标签的x位置。我不想做。

ggplot(mydf, aes(x, y)) +
  geom_point() +
  annotate(geom = "label", x = 10, y = 0.975, 
           label = annotations, 
           hjust = "right", vjust = "top", size = 4.5)

enter image description here

有没有一种方法可以计算x位置,以便可以确定标签固定为x = 0.5还是可以将文本的对齐方式和标签位置分开?

0 个答案:

没有答案