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.
