使用ggplot2时在限制后更改绘制函数

Changing drawn function after limit when using ggplot2

假设我有两个函数 y = xy = 1。我想使用 ggplot2 绘制它们,以便在 x[0,1] 时绘制第一个函数,在 x[1,3]

时绘制第二个函数

我不知道如何为单个函数设置限制。我只能限制两个功能的绘制区域或数据。

代码:

library(ggplot2)

ggplot(data.frame(x=c(0, 3)), aes(x)) + 
  stat_function(fun=function(x) x, colour="red") + stat_function(fun=function(x) 1, colour="blue") 

所以我希望在 x = 1 之前只画红线,在 x = 1 之后只画蓝线。

您可以尝试这样的操作:

f1 <- function(x) x
f2 <- function(x) 1
ggplot(data.frame(x=c(0, 3)), aes(x)) + 
  stat_function(fun=function(x) ifelse(x <= 1, f1(x), NA), colour="red") +
  stat_function(fun=function(x) ifelse(x >= 1, f2(x), NA), colour="blue")   

或者您只需要一种颜色的一行,那么您可以尝试:

ggplot(data.frame(x=c(0, 3)), aes(x)) + 
  stat_function(fun=function(x) ifelse(x <= 1, f1(x), f2(x)), colour="red")