使用ggplot2时在限制后更改绘制函数
Changing drawn function after limit when using ggplot2
假设我有两个函数 y = x
和 y = 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")
假设我有两个函数 y = x
和 y = 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")