【问题标题】:Move ggrepel long labels to right of plot lines将 ggrepel 长标签移动到绘图线的右侧
【发布时间】:2019-05-10 03:19:06
【问题描述】:

我希望将标签完全移动到情节线的右侧。我不希望进一步扩展 x 轴。我只需要创造空间。我该怎么做?


library(tidyverse)
library(ggrepel)

df <- tibble(
  x = as.Date(c("1990-01-01", "2000-01-01")),
  y = c(1, 3)
)

lbls <- filter(df, x == "2000-01-01")


ggplot(df, aes(x = x, y = y)) +
  geom_line() +
  geom_label_repel(data = lbls, label = "Hello there I am a very long label") + 
  theme_minimal() 

【问题讨论】:

    标签: r ggplot2 ggrepel


    【解决方案1】:

    添加 hjust 和 expand 似乎可以解决问题:

    ggplot(df, aes(x = x, y = y)) +
      geom_line() +
      geom_label_repel(
        data = lbls, 
        label = "Hello there I am a very long label", 
        hjust = -0.05
      ) + 
      scale_x_date(
        expand = expand_scale(mult = c(0, 1.5)),
        date_labels = "%Y",
        breaks = seq.Date(min(df$x), max(df$x), "5 years")
      ) +
      theme_minimal() +
      theme(panel.grid.minor.x = element_blank())
    

    如果 x 轴上的日期间隔不同,hjust 参数可能会不同。对于扩展,c(0, 1.5) 的意思是“不要对 x 轴的最小值进行任何调整,并将 x 轴的最大值再扩展 1.5 倍当前范围”。 1990-2000年的10年,又增加了15年。

    【讨论】:

    • 是否可以在绘图线右侧不显示网格线或日期标签的情况下执行此操作?
    • 但水平网格线仍然可见。
    • 您可以选择主题中出现/不出现的行theme(panel.grid.major.y = element_blank(), panel.grid.minor.y = element_blank(), panel.grid.minor.x = element_blank())
    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 2018-03-25
    相关资源
    最近更新 更多