**Ripples**, and kindly contributed to R-bloggers)

Oh, can it be, the voices calling me, they get lost and out of time (Little Black Submarines, The Black Keys)

Last October I did this experiment about complex domain coloring. Since I like giving my posts a *touch of randomness*, I have done this experiment. I plot four random functions on the form `p`

where _{1}(x)*p_{2}(x)/p_{3}(x)`p`

are polynomials _{i}(x)*up-to-4th-grade* with random coefficients following a chi-square distribution with degrees of freedom between 2 and 5. I measure the function over the complex plane and arrange the four resulting plots into a 2×2 grid. This is an example of the output:

Every time you run the code you will obtain a completely different output. I have run it *hundreds of times* because results are always surprising. Do you want to try? Do not hesitate to send me your creations. What if you change the form of the functions or the distribution of coefficients? You can find my email here.

setwd("YOUR WORKING DIRECTORY HERE") require(polynom) require(ggplot2) library(gridExtra) ncol=2 for (i in 1:(10*ncol)) {eval(parse(text=paste("p",formatC(i, width=3, flag="0"),"=as.function(polynomial(rchisq(n=sample(2:5,1), df=sample(2:5,1))))",sep="")))} z=as.vector(outer(seq(-5, 5, by =.02),1i*seq(-5, 5, by =.02),'+')) opt=theme(legend.position="none", panel.background = element_blank(), panel.margin = unit(0,"null"), panel.grid = element_blank(), axis.ticks= element_blank(), axis.title= element_blank(), axis.text = element_blank(), strip.text =element_blank(), axis.ticks.length = unit(0,"null"), axis.ticks.margin = unit(0,"null"), plot.margin = rep(unit(0,"null"),4)) for (i in 1:(ncol^2)) { pols=sample(1:(10*ncol), 3, replace=FALSE) p1=paste("p", formatC(pols[1], width=3, flag="0"), "(x)*", sep="") p2=paste("p", formatC(pols[2], width=3, flag="0"), "(x)/", sep="") p3=paste("p", formatC(pols[3], width=3, flag="0"), "(x)", sep="") eval(parse(text=paste("p = function (x) ", p1, p2, p3, sep=""))) df=data.frame(x=Re(z), y=Im(z), h=(Arg(p(z))<0)*1+Arg(p(z))/(2*pi), s=(1+sin(2*pi*log(1+Mod(p(z)))))/2, v=(1+cos(2*pi*log(1+Mod(p(z)))))/2) g=ggplot(data=df[is.finite(apply(df,1,sum)),], aes(x=x, y=y)) + geom_tile(fill=hsv(df$h,df$s,df$v))+ opt assign(paste("hsv_g", formatC(i, width=3, flag="0"), sep=""), g) } jpeg(filename = "Surrealism.jpg", width = 800, height = 800, quality = 100) grid.arrange(hsv_g001, hsv_g002, hsv_g003, hsv_g004, ncol=ncol) dev.off()

**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...