Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
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 p1(x)*p2(x)/p3(x)
where pi(x)
are polynomials 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:
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()
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.