Maths, Music and Merkbar
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Control is what we already know. Control is where we have already ventured. Control is what helps us predict the future. (Merkbar)
Maths and music get along very well. Last December I received a mail from a guy called Jesper. He is one of the two members of Merkbar: a electronic music band from Denmark. As can be read in their website:
Merkbar is Jesper and David who are both interested in the psychedelic worlds and oriental spiritualism. They both studied Computer Music, where they’ve done research in sound synthesis, generative composition and the design of new digital instrument.
They asked me a front cover for their new album which will be released at the beginning of 2015. Why? Because they liked this post I did about circlizing numbers. To do this plot I circlized the Golden Ratio number (Phi). But in this case I changed ribbons (all equal pairs of consecutive numbers gather together) by lines (every pair of consecutive numbers form a different line). As I did before, I used circlize
package, which implements in R the features of Circos, a software to create stunning circular visualizations.
The final plot represents the first 2.000 digits of Phi:
You can hear an advancement of their new album here, which is called “Phi”. Enjoy their sensitive and full-of-shades music: you will be delightfully surprised as I was.
This is the code to circlize Phi:
library(circlize) library(scales) factors = as.factor(0:9) lines = 2000 #Number of lines to plot in the graph alpha = 0.4 #Alpha for color lines colors0=c(rgb(239,143,121, max=255), rgb(126,240,188, max=255), rgb(111,228,235, max=255), rgb(127,209,249, max=255), rgb( 74,106,181, max=255), rgb(114,100,188, max=255), rgb(181,116,234, max=255), rgb(226,135,228, max=255), rgb(239,136,192, max=255), rgb(233,134,152, max=255)) #You can find the txt file here: http://www.goldennumber.net/wp-content/uploads/2012/06/Phi-To-100000-Places.txt phi=readLines("Phi-To-100000-Places.txt")[5] phi=gsub("\.","", substr(phi,1,lines)) phi=gsub("\.","", phi) position=1/(nchar(phi)-1) #This code generates a pdf file in your working directory pdf(file="CirclizePhi.pdf", width=25, height=25) circos.clear() par(mar = c(1, 1, 1, 1), lwd = 0.1, cex = 0.7, bg=alpha("black", 1)) circos.par("cell.padding"=c(0.01,0.01), "track.height" = 0.025, "gap.degree" = 3) circos.initialize(factors = factors, xlim = c(0, 1)) circos.trackPlotRegion(factors = factors, ylim = c(0, 1)) for (i in 0:9) {circos.updatePlotRegion(sector.index = as.character(i), bg.col = alpha("black", 1), bg.border=alpha(colors0[i+1], 1))} for (i in 1:(nchar(phi)-1)) { m=min(as.numeric(substr(phi, i, i)), as.numeric(substr(phi, i+1, i+1))) M=max(as.numeric(substr(phi, i, i)), as.numeric(substr(phi, i+1, i+1))) d=min((M-m),((m+10)-M)) col=t(col2rgb(colors0[(as.numeric(substr(phi, i, i))+1)])) if (col[1]>255) col[1]=255;if (col[2]>255) col[2]=255;if (col[3]>255) col[3]=255 if (col[1]<0) col[1]=0;if (col[2]<0) col[2]=0;if (col[3]<0) col[3]=0 if (d>0) circos.link(substr(phi, i, i), position*(i-1), substr(phi, i+1, i+1), position*i, h = 0.1375*d+0.1125, lwd=0, col=alpha(rgb(col, max=255), alpha), rou = 0.92) } 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.