
<!-- README.md is generated from README.Rmd. Please edit that file -->
<img align="right" src="data:image/png;base64,[encoded data, 6060 characters]" style="max-width: 300px">

mandelbrot
==========

<!-- [![travis\_status](https://travis-ci.org/blmoore/mandelbrot.svg?branch=master)](https://travis-ci.org/blmoore/mandelbrot) [![codecov](https://codecov.io/gh/blmoore/mandelbrot/branch/master/graph/badge.svg)](https://codecov.io/gh/blmoore/mandelbrot) [![CRAN\_badge](http://www.r-pkg.org/badges/version/mandelbrot)](https://cran.r-project.org/package=mandelbrot) -->

Curious whether your favourite complex number is a member of the Mandelbrot set?

—No? Then probably you just want to draw pretty pictures.

Install with:

``` r
devtools::install_github("blmoore/mandelbrot")
```

Examples
--------

``` r
library(mandelbrot)

mb <- mandelbrot()
plot(mb)
```

Pretty colours:

``` r
mb <- mandelbrot(xlim = c(-0.8438146, -0.8226294),
                 ylim = c(0.1963144, 0.2174996), 
                 iterations = 500, resolution = 800)

cols <- mandelbrot_palette(RColorBrewer::brewer.pal(11, "Spectral"), fold = FALSE)
plot(mb, col = cols)
```

Experiment with transforms:

``` r
# layout config (reset after)
par(mfrow = c(1, 2), pty = "s", mar = rep(0, 4))
plot(mb, col = cols, transform = "inverse")
plot(mb, col = cols, transform = "log")
```

Don't like `image`? Convert to a `data.frame` and use with ggplot2:

``` r
library(ggplot2)

mb <- mandelbrot(xlim = c(-0.8335, -0.8325),
                 ylim = c(0.205, 0.206), 
                 resolution = 1200L,
                 iterations = 1000)

# weird uneven palette made for a heatmap viz:
# https://benjaminlmoore.wordpress.com/2015/04/09/recreating-the-vaccination-heatmaps-in-r/
cols <- c(
  colorRampPalette(c("#e7f0fa", "#c9e2f6", "#95cbee",
                     "#0099dc", "#4ab04a", "#ffd73e"))(10),
  colorRampPalette(c("#eec73a", "#e29421", "#e29421", 
                     "#f05336","#ce472e"), bias=2)(90), 
  "black")

df <- as.data.frame(mb)
ggplot(df, aes(x = x, y = y, fill = value)) +
  geom_raster(interpolate = TRUE) + theme_void() +
  scale_fill_gradientn(colours = cols, guide = "none") 
```

`mandelbrot0` is a faster interface for `as.data.frame(mandelbrot(...))`.

See also
--------

[shinybrot](https://github.com/blmoore/shinybrot) is a Shiny web app that enables interactive exploration of the Mandelbrot set as generated by this package.

Hosted on shinyapps: <https://blmr.shinyapps.io/shinybrot>

Credits
-------

-   Wraps original R / C code by [mariodosreis](https://github.com/mariodosreis) (see R package [fractal](https://github.com/mariodosreis/fractal)).
