# Circlizing Numbers

November 24, 2014
By

She makes the sound the sea makes to calm me down (Dissolve Me, Alt-J)

Searching how to do draw chord diagrams in the Internet with `ggplot2` I found a very-easy-to-use package called `circlize` which does exactly that. A chord diagram shows relationships between things so the input to draw it is simply a matrix with the intensity of these relations. In this experiment I use this package to circlize numbers in this way:

• I take a number with many digits (`Rmpfr` package is very useful to obtain large numbers), I convert it to text and remove punctuation characters (necessary if number has decimals)
• Function `CreateAdjacencyMatrix` creates a 10×10 matrix where the element [i,j] contains the number of times that number “i” precedes to number “j” in the previous string (i and j from 0 to 9); this is the input to create diagram.

These diagrams are the result of circlizing four famous constants: Pi (green), Gamma (purple), Catalan (blue) and Logarithm constants (red):

Just two conclusions of my own to end:

• Circlize package is very easy to use and generates very nice diagrams
• Chord diagrams remember me to dreamcatchers
• The more I use `RColorBrewer` package the more I like it

This is the code to circlize numbers:

```library(Rmpfr)
library(circlize)
library(RColorBrewer)
s=gsub("\.", "", x)
m=matrix(0, 10, 10)
for (i in 1:(nchar(s)-1)) m[as.numeric(substr(s, i, i))+1, as.numeric(substr(s, i+1, i+1))+1]=m[as.numeric(substr(s, i, i))+1, as.numeric(substr(s, i+1, i+1))+1]+1
rownames(m) = 0:9;colnames(m) = 0:9
m}
jpeg(filename = "Chords.jpg", width = 800, height = 800, quality = 100)
par(mfrow=c(2,2), mar = c(1, 1, 1, 1))
chordDiagram(m1, grid.col = "darkgreen",
col = colorRamp2(quantile(m1, seq(0, 1, by = 0.25)), brewer.pal(5,"Greens")),
transparency = 0.4, annotationTrack = c("name", "grid"))
chordDiagram(m2, grid.col = "mediumpurple4",
col = colorRamp2(quantile(m2, seq(0, 1, by = 0.25)), brewer.pal(5,"Purples")),
transparency = 0.4, annotationTrack = c("name", "grid"))
chordDiagram(m3, grid.col = "midnightblue",
col = colorRamp2(quantile(m3, seq(0, 1, by = 0.25)), brewer.pal(5,"Blues")),
transparency = 0.4, annotationTrack = c("name", "grid"))
chordDiagram(m4, grid.col = "red3",
col = colorRamp2(quantile(m4, seq(0, 1, by = 0.25)), brewer.pal(5,"Reds")),
transparency = 0.4, annotationTrack = c("name", "grid"))
dev.off()
```