R中ggplot中的复杂函数

时间:2017-03-30 10:12:16

标签: r ggplot2

我有一个表达

((cos(-0.2 * pi)*(y-1) - (sin(-0.2 * pi)* x)))= 0.2 *(abs(sin((10 * pi *(sin(-0.2) * pi)*(y - 1)+ cos(-0.2 * pi)* x))^ 1)))^ 6

我想在带有geom_point绘制点的ggplot中绘制。 绘制时,该函数看起来与此图像类似: Plotted Function

该功能的问题可能是重叠值。我试图通过使用this question中描述的等高线图来解决它。该解决方案产生以下结果: Plotted Function with Contour Plot

然而,这个情节看起来不精确,所以我想找到一个更好的解决方案,用ggplot在R中绘制这种函数。

1 个答案:

答案 0 :(得分:5)

遵循等高线图的想法,您只需要增加x和y的分辨率。 在这里,您将找到一个包含您的功能的脚本。此处resolution的值越低,精度越高。注意不要使用太高的值来创建一个很长的计算...
它开始好于0.05:

library(ggplot2)
resolution <- 0.005
xy <- expand.grid(x = seq(0, 1, resolution), y = seq(0, 1, resolution))
z <- apply(xy, 1, function(xy) {
  x <- xy[1]
  y <- xy[2]
  0.2 * (abs( sin((10*pi*(sin(-0.2 * pi) * (y - 1) + cos(-0.2 * pi) * x))^1)))^6 - 
  ((cos(-0.2 * pi)*(y-1) - (sin(-0.2 * pi)*x)))
})

xyz <- data.frame(xy, z)

ggplot() +
geom_contour(data=xyz,
             aes(x=x,y=y,z=z),breaks=0,
             colour="black")