File Exchange

image thumbnail


version 1.0.7 (811 KB) by Graham W Griffiths
This program generates a series of parabolic lines between blocks on the periphery of a circular ring.

1 Download

Updated 01 Feb 2020

View License

Editor's Note: This file was selected as MATLAB Central Pick of the Week

This program generates a series of parabolic lines between blocks on the periphery of a circular ring. Each block representing a unique digit (0-9) and with its own colour. The method takes each digit in turn from an irrational or transcendental number, and draws a line from its corresponding block on the periphery to the corresponding block of the next digit in the number sequence. The line takes the same colour as the 'from' block and has its transparency set by an associated alpha value. The next line starts at the end point of the previous line and ends at the next digit in the sequence. The vertices of the parabolas are located on concentric rings with the radii determined by the difference between adjacent digits.

The number sequences omit the decimal point, e.g. for pi we use the sequence 314159 ... rather that 3.14159 ... . Also, for the 'Feigenbaum alpha constant', we use the positive version. It will be noticed that the number of connections to each block differs. This is because the instances of each particular digit, 1,2,3...,0, vary over the length of the sequence. Irrational and transcendental numbers used here are considered to be 'normal', i.e. as the length of the sequence increases, the 'average of all the digits' tends asymptotically to 4.5. In other words, the count differences, as a percentage, tend to zero. However, for some numbers, normality has not yet been proved.

On a standard PC, the program calculations complete in around 12 seconds for a number sequence length of 10,000. Writing the output file takes an additional 12 seconds, making around 24 second in all.

The project was Inspired by 'Circos' plots generated by Cristian Vasile and Martin Krzywinski, see:

Cite As

Graham W Griffiths (2020). digCircs (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (5)

Hi Tahariet, thanks for your query - could you explain exactly how you are using the code.

My random sequence is < 10K digits. However, I don't modify this value and still produces a plot. How is it doing it? Is it copy and pasting the initial values at the end of the input sequence? Thanks.

Many thanks Raul. I have added the file circle2.m to the download. This file is only needed if the background of the plot is changed by the user. It is currently set to 'black' in outerRing.m on the line: set(gca,'color','black','XTick',[],'YTick',[]); % set bg color. The reason the call is included is to ensure that the central symbol shows up.

Raul Garcia

Hello dear Graham. I really like your approach, nice work, congratulations!
At first run, the code failed since it calls a function named "circle2". I just commented out that line since it makes no big difference.



missing circle2.m file added


New image


number sequence files uploaded


Minor typos corrected in descriptions.


example plot file added


minor update


minor typo corrected

MATLAB Release Compatibility
Created with R2019b
Compatible with any release
Platform Compatibility
Windows macOS Linux