我尝试使用ggplot在散点图下绘制等值线,但我无法弄清楚如何正确使用stat_function
。
isoclines基于距离公式:
sqrt((x1-x2)^2 + (y1-y2)^2)
看起来像这些 同心圆,除了中心将是情节的起源:
我到目前为止所尝试的是如此调用ggplot中的距离函数(注意:我使用x1 = 1和y1 = 1因为在我的实际问题中我也有固定值)
distance <- function(x, y) {sqrt((x - 1)^2 + (y - 1)^2)}
ggplot(my_data, aes(x, y))+
geom_point()+
stat_function(fun=distance)
但R返回错误:
计算失败在&#39; stat_function()&#39;:参数&#34; y&#34;失踪了 没有默认
如何正确地将x和y值提供给stat_function
,以便绘制距离公式的通用图,中心位于原点?
答案 0 :(得分:2)
对于任何有点复杂的事情,我都避免使用stat
函数。它们主要用于快速计算。它们通常仅限于根据y
计算x
。我只想用stat_contour
预先计算数据和图:
distance <- function(x, y) {sqrt((x - 1)^2 + (y - 1)^2)}
d <- expand.grid(x = seq(0, 2, 0.02), y = seq(0, 2, 0.02))
d$dist <- mapply(distance, x = d$x, y = d$y)
ggplot(d, aes(x, y)) +
geom_raster(aes(fill = dist), interpolate = T) +
stat_contour(aes(z = dist), col = 'white') +
coord_fixed() +
viridis::scale_fill_viridis(direction = -1)