ggplot2 在 y 轴上注释(图外)

qnp*_*521 4 r ggplot2

我正在尝试向 Y 轴上的水平线添加注释。在查看了类似的问题后,我创建了一些类似的东西,但并不完全是我想要的。具体来说,我希望将文本“高”放置在 Y 轴(图外)低于 6(在 Y 轴上)。这是我迄今为止尝试过的。

set.seed(57)
discharge <- data.frame(date = seq(as.Date("2011-01-01"), as.Date("2011-12-31"), by="days"),
                        discharge = rexp(365))

ggplot(discharge) +
  geom_line(aes(x = date, y = discharge)) +
  geom_hline(yintercept = 5.5, linetype= "dashed", color = "red") + 
  geom_text(aes(x = date[13], y = 5.5, label = "High"))
Run Code Online (Sandbox Code Playgroud)

任何建议,将不胜感激!

xil*_*iam 12

这是您想要的尝试,它使用annotate(而不是geom_text)和,类似于 Maurits Evers 在这里提供的答案:coord_cartesian绘图区域之外添加文本。请注意,必须对其进行设置,并且 x 轴坐标是通过从日期输入中减去来手动设置的。clip = "off"xlim

ggplot(discharge) +
  geom_line(aes(x = date, y = discharge)) +
  geom_hline(yintercept = 5.5, linetype= "dashed", color = "red") + 
  annotate("text", x = discharge$date[13]-30, y = 5.5, label = "High")+
  coord_cartesian(xlim = c(discharge$date[13], max(discharge$date)),  clip = 'off') 
Run Code Online (Sandbox Code Playgroud)

图表


ste*_*fan 6

相应地设置中断和标签。尝试这个:

library(ggplot2)

set.seed(57)
discharge <- data.frame(date = seq(as.Date("2011-01-01"), as.Date("2011-12-31"), by="days"),
                        discharge = rexp(365))

ggplot(discharge) +
  geom_line(aes(x = date, y = discharge)) +
  geom_hline(yintercept = 5.5, linetype= "dashed", color = "red") + 
  scale_y_continuous(breaks = c(0, 2, 4, 5.5, 6),
                     labels = c(0, 2, 4, "High", 6))
Run Code Online (Sandbox Code Playgroud)

reprex 包(v0.3.0)于 2020 年 3 月 8 日创建