R:ggplot距离公式

R:ggplot距离公式,r,ggplot2,R,Ggplot2,我试图使用ggplot在散点图下绘制等线,但我不知道如何正确使用stat\u函数 等高线基于距离公式: sqrt((x1-x2)^2 + (y1-y2)^2) 看起来像这些 同心圆,但中心将是绘图的原点: 到目前为止,我尝试在ggplot中调用距离函数(注意:我使用x1=1和y1=1,因为在我的实际问题中,我也有固定值) distance对于有点复杂的事情,我避免使用stat函数。它们主要是为了快速计算。它们通常仅限于基于x计算y。我只是用stat\u contour预先计算数据和曲线图:

我试图使用ggplot在散点图下绘制等线,但我不知道如何正确使用
stat\u函数

等高线基于距离公式:

sqrt((x1-x2)^2 + (y1-y2)^2)
看起来像这些 同心圆,但中心将是绘图的原点:

到目前为止,我尝试在ggplot中调用距离函数(注意:我使用x1=1和y1=1,因为在我的实际问题中,我也有固定值)


distance对于有点复杂的事情,我避免使用
stat
函数。它们主要是为了快速计算。它们通常仅限于基于
x
计算
y
。我只是用
stat\u 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)

distance
stat\u函数
只能处理计算y的函数。你需要把你的公式重新排列成一个函数y=f(x)。谢谢你,这太完美了!如何将光栅颜色更改为与viridis不同的调色板?我不熟悉::运算符:::只需避免先使用库(viridis)。请参见“帮助”页面和“选项”参数以更改选项板。
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)