【问题标题】:ggplot add annotation box, arrow with dynamic value in itggplot添加注释框,其中带有动态值的箭头
【发布时间】:2017-05-18 00:08:04
【问题描述】:

我正在尝试在绘图中添加一个注释框(使用 ggplot)。我在注释中使用文本几何添加了文本。逻辑应该是 - 每次我们生成绘图时,它都应该有带有最新月份和值的文本框。并且文本框应该使用箭头或线指向图中的相应值。这是我到目前为止尝试过的,

 myplot <-  ggplot(sa_dat1,  aes(x = variable,  y = value )) + 
        theme_minimal() +
        geom_line(linetype = "solid", color = "#0072CE",size=1) +
        geom_smooth(method="loess", se=FALSE , linetype = "dashed", color="black", size = 0.5) + 
        scale_x_date(labels = date_format("%b-%Y"), date_breaks  ="2 month",expand = c(0.005,0)) +
        theme(axis.text.x = element_text(angle = 90, hjust = 1,vjust=0.5)) +
        scale_y_continuous(limits=c(ylimitmin5,ylimitmax5), labels=dollar_format(prefix="$"),
                 breaks  = seq(ylimitmin5, ylimitmax5, by = 10000),
                 expand = c(0,0)) +
        annotate("text", x=floor_date(max(sa_dat1$variable), "month") - months(12), 
           y= max(sa_dat1$value) - 20000, label = paste0("April 2017\n",
paste("$",round(max(sa_dat1$value)))))

这就是我得到的,

我的目标是这个,我不知道如何在我的文本周围添加箭头和文本框。

【问题讨论】:

  • annotate(geom = "label", ...) 而不是 "text" 会为您提供一个围绕文本的框,您可以使用填充、边框等进行修改。
  • 太棒了,有帮助,我会玩的。但是,您能告诉我如何在其中添加那个箭头吗?
  • 只是在黑暗中拍摄,未经测试:+annotate("segment", x=floor_date(max(sa_dat1$variable), "month") - months(12), xend = floor_date(max(sa_dat1$variable), "month"), y= max(sa_dat1$value) - 20000, yend= max(sa_dat1$value), arrow = arrow())
  • 整理好了。 :) 但是它从文本框的中心开始。有没有办法从盒子的右侧角落开始?如果没有,那没关系,只要写你的 cmets 作为答案,这解决了我的问题,我会接受它作为答案。

标签: r ggplot2 ggrepel


【解决方案1】:

来自上面的cmets:

annotate(geom = "label", ...) 代替 "text" 为您提供一个围绕文本的框,您可以使用填充、边框等进行修改。

只是在黑暗中拍摄,未经测试:+annotate("segment", x=floor_date(max(sa_dat1$variable), "month") - months(12), xend = floor_date(max(sa_dat1$variable), "month"), y= max(sa_dat1$value) - 20000, yend= max(sa_dat1$value), arrow = arrow())

最后,您可以使用 xy 美学的值调整箭头的开始和结束,就像您已经为标签调整它们一样。也许试试-months(8)-10000


编辑添加:

  • 致电library(lubridate) 使用months()floor_date()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多