如何使用ggplot沿水平轴偏移stat_function生成的几何曲线
问题原因说明
你之前的调整方法无效是因为stat_function传入的长度为2的data参数仅用于定义当前层函数的计算x区间,不会对x的映射值做偏移,函数依然基于绘图坐标系下的原始x值计算,因此输出和原图没有差异。
正确实现方法
要实现曲线水平偏移且形态完全不变,直接对函数本身做数学变换即可:如果需要将函数y = f(x)沿水平轴向右偏移k个单位,新的函数表达式调整为y = f(x - k)即可。
举个例子,你要将蓝色曲线右移3个单位、绿色曲线右移5个单位,可使用如下代码:
library(ggplot2) # 调整x轴最大值到30,避免偏移后曲线超出显示范围 ggplot(data.frame(x = c(0, 30)), aes(x)) + # 红色曲线保持不变 stat_function(fun = function(x) plogis(x, location = 5, scale = 2), colour = "red") + # 蓝色曲线右移3个单位,函数内部x减3 stat_function(fun = function(x) plogis(x - 3, location = 9, scale = 3), colour = "blue") + # 绿色曲线右移5个单位,函数内部x减5 stat_function(fun = function(x) plogis(x - 5, location = 9, scale = 4), colour = "green")
如果需要调整偏移量,只需要修改函数内部减去的数值即可,左移的话对应改成加数值即可。
内容的提问来源于stack exchange,提问作者Matteo
相关产品推荐
相关产品推荐

