如何在ggplot2的顶部面板边框添加线条

Sco*_*ott 3 r ggplot2

我希望能够以编程方式为我的情节的最顶部分配一条绿线。

下面我在一个例子中展示了我想要什么,除了线在最底部,而不是顶部。理想情况下,我会theme以类似的方式完成这项工作。

我试图自己完成顶线,panel.border但它需要element_rect一个参数,这意味着情节的另一边也将获得绿线。

虽然最好使用theme,但我愿意使用geom_hline或其他任何东西。当我尝试实施解决方案时geom_hline遇到了麻烦,无法确定 ggplot 计算的 y 轴的最大值,以便将线干净地放在同一位置,而不管从绘图到绘图的比例如何变化。使用我的真实数据,y 轴的刻度变化很大,并且从绘图到绘图具有不同的测量单位。

 library(tidyverse)
 data(mtcars)

 mtcars %>% 
     ggplot(aes(x= mpg, y= disp)) +
     geom_point() +
     theme(axis.line.x= element_line("green", size= 2))
Run Code Online (Sandbox Code Playgroud)

绿线

jdo*_*res 5

您可以通过annotate巧妙地使用Inf值来实现这一点。请注意,因为annotate是在绘图内部而不是在绘图外部的轴线上绘图,所以您需要一条双倍粗细的线来匹配您对theme. Inf值的使用保证了该线将被放置在图的顶部,而不管其单位的比例如何。

library(tidyverse)
data(mtcars)

mtcars %>% 
  ggplot(aes(x= mpg, y= disp)) +
  geom_point() +
  annotate(geom = 'segment', y = Inf, yend = Inf, color = 'green', x = -Inf, xend = Inf, size = 4) +
  theme(axis.line.x= element_line("green", size= 2))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

此外,annotate如果您想以编程方式分配线,您可以将调用保存在一个变量中,然后简单地将其添加到绘图中。