r - 如果我在分段函数(ggplot2)上从 >= 更改为 >,为什么我的连续图会突然发生变化?

标签 r ggplot2 graph continuous

我将使用ggplot2在R上描绘一个连续图库,基于分段函数。

fun1 <- function(x){
  ifelse(x<=-2, -1.5*(-x)^2, NA)
}
fun2 <- function(x){
  ifelse(x>-2, 6*x-5, NA)
}
gg <- ggplot(data.frame(x = c(-5, 5)), 
              aes(x = x))+
  stat_function(fun = fun1, n=1001)+
  stat_function(fun = fun2, n=1001)
print(gg)   

这显示了分段函数的正确图形。

enter image description here

但是如果我改变条件稍微不同,这样 ifelse(x<-2, -1.5*(-x)^2, NA)ifelse(x>=-2, 6*x-5, NA) ,然后图表的第一部分突然无法正确描绘。

enter image description here

这似乎是ifelse函数现在总是返回 -6对于所有值 x ,无论它是否是<=-2或不。

但是为什么会突然发生这样的变化呢?我尝试使用标准绘图函数描绘连续曲线,但仍然得到相同的结果......

最佳答案

这就是当您在运算符之间不留空格时会发生的情况。除了降低代码的可读性之外,有时还会使解析器感到困惑。在您的情况下,解析器解释 x<-2x <- 2 ,即“将 2 分配给 x”,而不是 x < -2 ,即“x 小于负 2”。

当您使用分配作为 ifelse 中的第一个参数时,它将评估赋值的“真实性”,并且由于 2 是正整数,因此它将始终评估为 true。由于在计算该子句时,x 为 2,因此对于该函数的所有输入值,您的输出将为 -1.5 * (-2)^2 ,即-6。

如果您使用空格(或括号),则不会发生这种情况:

fun1 <- function(x){
  ifelse(x < -2, -1.5*(-x)^2, NA)
}
fun2 <- function(x){
  ifelse(x > -2, 6*x-5, NA)
}
gg <- ggplot(data.frame(x = c(-5, 5)), 
             aes(x = x))+
  stat_function(fun = fun1, n=1001)+
  stat_function(fun = fun2, n=1001)
print(gg)   

enter image description here

关于r - 如果我在分段函数(ggplot2)上从 >= 更改为 >,为什么我的连续图会突然发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74172562/

相关文章:

QT中的R统计控制台

r - 什么是 %||% 运算符(在 ggplot2 中使用),它在哪里定义?

r - 在几何密度脊线图中为平均值和分位数设置不同的颜色线

r - 在ggplot中自定义geom_point参数

r - 使用 R 数学符号时,ggplot geom_text 会弄乱文本顺序

javascript - 使用 Dygraphs 将数据点添加到现有图表

r - 使用 R 时尝试替换 NA 时得到奇数值

r - 在每次函数迭代时动态更新输入数据帧,无需全局分配

python - 将图形解释为哈希表(python dict)

c - 从邻接矩阵中删除顶点的好方法