Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Beauty is the first test; there is no permanent place in the world for ugly mathematics (G. H. Hardy)
Newton basin fractals are the result of iterating Newton’s method to find roots of a polynomial over the complex plane. It maybe sound a bit complicated but is actually quite simple to understand. Those who would like to read some more about Newton basin fractals can visit this page.
This fractals are very easy to generate in R and produce very nice images. Making a small number of iterations, resulting images seems to be blurred when are represented with tile geometry in ggplot. Combined with palettes provided by RColorBrewer give rise to very interesting images. Here you have some examples:
Result for f(z)=z3-1
and palette equal to Set3
:f(z)=z4+z-1
and palette equal to Paired
:f(z)=z5+z3+z-1
and palette equal to Dark2
:
library(ggplot2) library(numDeriv) library(RColorBrewer) library(gridExtra) ## Polynom: choose only one or try yourself f <- function (z) {z^3-1} #Blurry 1 #f <- function (z) {z^4+z-1} #Blurry 2 #f <- function (z) {z^5+z^3+z-1} #Blurry 3 z <- outer(seq(-2, 2, by = 0.01),1i*seq(-2, 2, by = 0.01),'+') for (k in 1:5) z <- z-f(z)/matrix(grad(f, z), nrow=nrow(z)) ## Supressing texts, titles, ticks, background and legend. opt <- theme(legend.position="none", panel.background = element_blank(), axis.ticks=element_blank(), axis.title=element_blank(), axis.text =element_blank()) z <- data.frame(expand.grid(x=seq(ncol(z)), y=seq(nrow(z))), z=as.vector(exp(-Mod(f(z))))) # Create plots. Choose a palette with display.brewer.all() p1 <- ggplot(z, aes(x=x, y=y, color=z)) + geom_tile() + scale_colour_gradientn(colours=brewer.pal(8, "Paired")) + opt p2 <- ggplot(z, aes(x=x, y=y, color=z)) + geom_tile() + scale_colour_gradientn(colours=brewer.pal(7, "Paired")) + opt p3 <- ggplot(z, aes(x=x, y=y, color=z)) + geom_tile() + scale_colour_gradientn(colours=brewer.pal(6, "Paired")) + opt p4 <- ggplot(z, aes(x=x, y=y, color=z)) + geom_tile() + scale_colour_gradientn(colours=brewer.pal(5, "Paired")) + opt # Arrange four plots in a 2x2 grid grid.arrange(p1, p2, p3, p4, ncol=2)
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.