(This article was first published on

**Ripples**, and kindly contributed to R-bloggers)Tell me, which side of the earth does this nose come from? Ha! (ALF)

Reading about strange attractors I came across with this book, where I discovered a way to generate two dimensional chaotic maps. The generic equation is pretty simple:

I used it to generate these *chaotic galaxies*:

Changing the vector of parameters you can obtain other galaxies. Do you want to try?

library(ggplot2) library(dplyr) #Generic function attractor = function(x, y, z) { c(z[1]+z[2]*x+z[3]*x^2+ z[4]*x*y+ z[5]*y+ z[6]*y^2, z[7]+z[8]*x+z[9]*x^2+z[10]*x*y+z[11]*y+z[12]*y^2) } #Function to iterate the generic function over the initial point c(0,0) galaxy= function(iter, z) { df=data.frame(x=0,y=0) for (i in 2:iter) df[i,]=attractor(df[i-1, 1], df[i-1, 2], z) df %>% rbind(data.frame(x=runif(iter/10, min(df$x), max(df$x)), y=runif(iter/10, min(df$y), max(df$y))))-> df return(df) } opt=theme(legend.position="none", panel.background = element_rect(fill="#00000c"), plot.background = element_rect(fill="#00000c"), panel.grid=element_blank(), axis.ticks=element_blank(), axis.title=element_blank(), axis.text=element_blank(), plot.margin=unit(c(-0.1,-0.1,-0.1,-0.1), "cm")) #First galaxy z1=c(1.0, -0.1, -0.2, 1.0, 0.3, 0.6, 0.0, 0.2, -0.6, -0.4, -0.6, 0.6) galaxy1=galaxy(iter=2400, z=z1) %>% ggplot(aes(x,y))+ geom_point(shape= 8, size=jitter(12, factor=4), color="#ffff99", alpha=jitter(.05, factor=2))+ geom_point(shape=16, size= jitter(4, factor=2), color="#ffff99", alpha=jitter(.05, factor=2))+ geom_point(shape=46, size= 0, color="#ffff00")+opt #Second galaxy z2=c(-1.1, -1.0, 0.4, -1.2, -0.7, 0.0, -0.7, 0.9, 0.3, 1.1, -0.2, 0.4) galaxy2=galaxy(iter=2400, z=z2) %>% ggplot(aes(x,y))+ geom_point(shape= 8, size=jitter(12, factor=4), color="#ffff99", alpha=jitter(.05, factor=2))+ geom_point(shape=16, size= jitter(4, factor=2), color="#ffff99", alpha=jitter(.05, factor=2))+ geom_point(shape=46, size= 0, color="#ffff00")+opt #Third galaxy z3=c(-0.3, 0.7, 0.7, 0.6, 0.0, -1.1, 0.2, -0.6, -0.1, -0.1, 0.4, -0.7) galaxy3=galaxy(iter=2400, z=z3) %>% ggplot(aes(x,y))+ geom_point(shape= 8, size=jitter(12, factor=4), color="#ffff99", alpha=jitter(.05, factor=2))+ geom_point(shape=16, size= jitter(4, factor=2), color="#ffff99", alpha=jitter(.05, factor=2))+ geom_point(shape=46, size= 0, color="#ffff00")+opt #Fourth galaxy z4=c(-1.2, -0.6, -0.5, 0.1, -0.7, 0.2, -0.9, 0.9, 0.1, -0.3, -0.9, 0.3) galaxy4=galaxy(iter=2400, z=z4) %>% ggplot(aes(x,y))+ geom_point(shape= 8, size=jitter(12, factor=4), color="#ffff99", alpha=jitter(.05, factor=2))+ geom_point(shape=16, size= jitter(4, factor=2), color="#ffff99", alpha=jitter(.05, factor=2))+ geom_point(shape=46, size= 0, color="#ffff00")+opt

To

**leave a comment**for the author, please follow the link and comment on their blog:**Ripples**.R-bloggers.com offers

**daily e-mail updates**about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...