通常,您可以使用以下命令更改整个轴线的颜色:
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”来添加/减去时间。
minX <- min(myData$Timestamp)
maxX <- max(myData$Timestamp)
lim <- as.POSIXct(c(minX -minutes (5), maxX), origin = "1970-01-01")
+ coord_cartesian(xlim=c(minX - minutes(5), maxX),c(60,100), expand = FALSE)
+ geom_segment(aes(x = minX - minutes(5), y = 60, xend = minX - minutes(5), yend = 70), size = 1, color = "red"
请记住,这是针对我的用例。我可能需要对此进行调整(并更多地编辑这篇文章)
如果你想要两种颜色,你需要两条线。您不能有两条轴线,因此您需要将这些线绘制为线段,如下面的表示法所示:
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 日创建
归档时间: |
|
查看次数: |
75 次 |
最近记录: |