用不同颜色的线段绘制Y轴线

kon*_*kon 4 r ggplot2

通常,您可以使用以下命令更改整个轴线的颜色:

theme ( axis.line.y = element_line(color = "gray", size = 1) )

但是,我想绘制一个 Y 轴,其中不同的部分具有不同的颜色。例如,低于 0 的蓝线和高于 0 的红色线。一个小例子,其中轴已被手动“绘制”:

df <- data.frame(x = 1:8, y = -3:4)

ggplot(df, aes(x, y)) +
    geom_point()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

非常感谢!

编辑:Allan Cameron 的答案是正确的,但对我不起作用,因为我有一个时间序列图,其中我的 x 轴采用时间格式 (POSIXct)。他的帖子让我了解了它是如何工作的,我觉得我已经用一些技巧让它工作了。这是我的做法,它可以适用于不同的情况/范围。需要包“lubridate”来添加/减去时间。

  1. 获取我的 x 轴的最小值和最大值:

minX <- min(myData$Timestamp)

maxX <- max(myData$Timestamp)

  1. 设置限制:

lim <- as.POSIXct(c(minX -minutes (5), maxX), origin = "1970-01-01")

  1. coord_cartesian 像这样:

+ coord_cartesian(xlim=c(minX - minutes(5), maxX),c(60,100), expand = FALSE)

  1. 画线:

+ geom_segment(aes(x = minX - minutes(5), y = 60, xend = minX - minutes(5), yend = 70), size = 1, color = "red"

请记住,这是针对我的用例。我可能需要对此进行调整(并更多地编辑这篇文章)

All*_*ron 6

如果你想要两种颜色,你需要两条线。您不能有两条轴线,因此您需要将这些线绘制为线段,如下面的表示法所示:

library(ggplot2)

df <- data.frame(x = 0:10, y = 0:10)

ggplot(df, aes(x, y)) +
  geom_point() +
  geom_segment(aes(x = 0, y = 0, xend = 0, yend = 2), size = 2, color = "red") +
  geom_segment(aes(x = 0, y = 2, xend = 0, yend = 10), size = 2, color = "blue") +
  scale_x_continuous(expand = c(0, 0)) +
  scale_y_continuous(expand = c(0, 0)) +
  theme(axis.line.y = element_blank(),
        axis.line.x = element_line())
Run Code Online (Sandbox Code Playgroud)

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