我想在绘图上绘制自定义函数,例如:
df <- data.frame(x = seq(1, 20, 0.5), y = jitter(4.5*x, 20))
g <- ggplot(df, aes(x=x, y=y))
g + geom_point() +
stat_function(fun = function(x) 4.5*x)
但是我想要像这样修改我的x轴标签:
g + geom_point() +
scale_x_discrete(breaks = c(1, 10, 20), labels = c("A little", "Moderate", "A lot")) +
stat_function(fun = function(x) 4.5*x)
我收到下面的警告信息,情节无法绘制:
警告消息:
stat_function()
中的计算失败:尝试 申请非职能
如何将x轴更改为我自己的自定义标签并显示我的功能?
我看了this question,但对于看似非常简单的事情,答案似乎非常复杂!
答案 0 :(得分:1)
正如评论者建议的那样,您应该使用scale_x_continuous
,例如
ggplot(df, aes(x=x, y=y)) + geom_point() +
stat_function(fun = function(x) 4.5*x) +
scale_x_continuous(breaks = c(1, 10, 20),
labels = c("A little", "Moderate", "A lot"))
当您使用scale_x_discrete
时,我猜测ggplot2
会将您的数据从数字更改为因子而stat_function
必须检查数字 - 我基于这个事实将4.5*x
更改为4.5*as.numeric(x)
并不能解决问题。
但是,stat_smooth
仍适用于离散比例 - lowess
方法可以使用因子。