用R语言画蝴蝶曲线

用R语言画蝴蝶曲线

蝴蝶曲线的极坐标方程为

参数取值范围为。

写成参数方程,为

参数取值范围与极坐标下是相同的。一般为了追求曲线多一些变化,往往把改写成。

这些天不少文章用matlab、mathematica、maple、python语言,甚至scratch、VBA等绘制它,却唯独少了R语言。然而R语言在可视化的表现力方面是相当相当强大的。下面用R来画蝴蝶曲线。

在参数方程下用ggplot2包绘制

t<-seq(from = 0, to = 12*pi, by = 0.005)
x<-sin(t)*(exp(cos(t)) - 2*cos(4*t)-(sin(t/11))^5)
y<-cos(t)*(exp(cos(t)) - 2*cos(4*t)-(sin(t/11))^5)
mydata<-data.frame(x = x, y = y)
library(ggplot2)
ggplot(data = mydata,aes(x = x, y = y))+
  geom_point(colour = 'blue')+
  coord_cartesian()

在参数方程下直接使用plot低水平函数绘制

t<-seq(from = 0, to = 12*pi, by = 0.005)
x<-sin(t)*(exp(cos(t)) - 2*cos(4*t)-(sin(t/11))^5)
y<-cos(t)*(exp(cos(t)) - 2*cos(4*t)-(sin(t/11))^5)
mydata<-data.frame(x = x, y = y)
par(mfrow=c(2,1))
plot(x,y,"s",col="blue")
plot(x,y,"h",col="cyan2")

极坐标方程下用IDPmisc极坐标转直角坐标

t<-seq(from = 0, to = 12*pi, by = 0.005)
r <-exp(cos(t))-2*cos(4*t)+(sin(t/12))^5
library(IDPmisc)
#小心IDPmisc极坐标转直角坐标的phi用度作为角单位
xy <- clock2cart(rho=r,phi=t/pi*180,circle=-360)

library(ggplot2)
ggplot(data = xy,aes(x = x, y = y))+
  geom_point(colour = 'red')

把直角坐标弯曲对应到平面圆里面

t<-seq(from = 0, to = 12*pi, by = 0.005)
r <-exp(cos(t))-2*cos(4*t)+(sin(t/12))^5
library(IDPmisc)
#小心IDPmisc极坐标转直角坐标的phi用度作为角单位
xy <- clock2cart(rho=r,phi=t/pi*180,circle=-360)

library(ggplot2)
ggplot(data = xy,aes(x = x, y = y))+
  geom_point(colour = 'red')+
  coord_polar()  

(0)

相关推荐