我有一个表达
((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中绘制。 绘制时,该函数看起来与此图像类似:
该功能的问题可能是重叠值。我试图通过使用this question中描述的等高线图来解决它。该解决方案产生以下结果:
然而,这个情节看起来不精确,所以我想找到一个更好的解决方案,用ggplot在R中绘制这种函数。
答案 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")