Use Circos to create concise, explanatory, unique and print-ready visualizations of your data.
Current version is 0.52.
Try the online version.
Current version is 0.52.
This is a bug release. Issues with ideogram ordering and axis breaks have been addressed.
Current tools version is v0.13.
New is categoryviewer, used to visualize categorical data and a significantly updated tableviewer. Read about the theory and practise of visualizing tabular data.
Circos Online
An online version of Circos is now available to visualize tabular data. Turn your tables into informative images!
![]() 3x3 table |
![]() 4x4 table |
![]() 6x6 table |
![]() 8x8 table |
Conde Nast Porfolio features an article on personalized genome sequencing. An image by Circos appears in a double-page spread. The art direction called for something primarily artistic and visually appealing, but also connected to the content of the article.
An image created by Circos appears on the cover of the Sept/Oct issue of American Scientist.
The image accompanies an article by Elaine Ostrander about dog genetics and illustrates the deep sequence similarity between the human and dog genomes. Read about the figure.
Circos is used to generate a visualization of the 2007 Democratic and Republican Debates. The image was created by Jonathan Corum and Farhana Hossain, who discuss how the image was conceptualized.
Circos is featured in the Science section of the New York Times (22 Jan 2007).
Circos - a data viewer with comparative genomics in mind
Visualizing quantitative information - featuring work of Tufte
A variety of Circos posters are available.
The tutorials illustrate different features of circos and take the place of documentation. Tutorials are divided into sections, with each section covering a particular feature set. The tutorials build on each other, so it is a good idea to go through them in order. Each tutorial has includes images and configuration files. These tutorials are for Circos v0.3x. The syntax of the configuration files is not compatible with v0.2x branch.
tutorial 1 Circos directory structure and configurationDescription of Circos distribution directories and files. Introduction to configuration files. Debugging Circos and common errors. |
Circos generates static images. The image generation process is driven by a central configuration file. This file usually imports other configuration files, such as global color and font settings.
Settings are defined in configuration files using the format
variable = value
Some settings are grouped in blocks,
<ideogram> thickness = 30p fill = yes ... </ideogram>
Some blocks are named to all for multiple instances of the same kind of element in the image (such as a data track).
<link dataset1> file = data/set2.txt color = black ... </link> <link dataset2> file = data/set2.txt color = red ... </link>
Some settings never or rarely change, such as colors and fonts. To centralize these values, two configuration files, colors.conf and fonts.conf, are typically imported into a Circos configuration file using the following syntax.
<colors> <<include etc/colors.conf>> </colors> <fonts> <<include etc/fonts.conf>> </fonts>
Conventionally, I store configuration for ideograms in an external file (ideogram.conf) and for tick mark formatting (ticks.conf). The reason for this is that these settings are fairly verbose, but are not related to a data set. By importing ideogram and tick mark settings from an external file
<<include ideogram.conf>> <<include ticks.conf>>
the main configuration file is kept more succinct. Moreover, if you are creating multiple images with different data sets, you are likely to use the same settings for ideogram and tick mark formats. Storing these settings separately just makes sense.
If you have parameters that rarely change, consider creating external configuration files for these.
It is easiest to package all color definitions in a single file. You'll find these in etc/colors.conf. Each color is given a name and corresponding RGB value.
orange = 255,136,0
Typically for a given color name (e.g. orange), there are corresponding shades of the color with prefixed d (dark), l (light), each of which may be prefixed one or more v (very). For example,
vlorange = 255,228,193 lorange = 255,187,110 orange = 255,136,0 dorange = 221,143,55
A set of colors named after chromosomes is also defined and corresponds to the chromosome color scheme used by UCSC Genome Browser and other online resources. This is a standardized palette.
chr1 = 153,102,0 chr2 = 102,102,0 chr3 = 153,153,30 ... chrX = 153,153,153 chrY = 204,204,204
Another set of colors is named after cytogenetic band colors, typically reported in karyotype files. These colors define the G-staining shades seen in ideograms.
gpos100 = 0,0,0 gpos = 0,0,0 gpos75 = 130,130,130 gpos66 = 160,160,160 gpos50 = 200,200,200 gpos33 = 210,210,210 gpos25 = 200,200,200 gvar = 220,220,220 gneg = 255,255,255 acen = 217,47,39 stalk = 100,127,164
Transparent colors are supported, and should be defined in this format
colorname = r,g,b,a
where "a" is an alpha value in the range 0-127. When a=0 the color is fully opaque, and when a=127 it is fully transparent.
To use transparent colors you must toggle the 24bit flag on
<image> ... 24bit=yes ... </image>
Please see tutorial 8.9 for discussion about automating definition of transparent colors.
Circos ships with just a few TTF fonts, which are assigned to labels in etc/fonts.conf.
default = fonts/LTe50046.ttf normal = fonts/LTe50046.ttf bold = fonts/LTe50048.ttf ...
To use a specific font for an element, specify its label (e.g. normal, bold) in the configuration file. The LTe500NN.ttf fonts are Helvetica Neue, a readable and modern sans serif type face appropriate for a wide use.
To add your own fonts, copy the TTF file to fonts/ and add a new label to the font in the fonts.conf configuration.
To render very small labels, you should consider using bitmapped fonts. These fonts are designed to be used at a specific size and without anti-aliasing. One such family is the Mini Font set from minifonts.com.
If you susspect there may be a problem with drawing images, please run
# no debug bin/gddiag # with debug bin/gddiag
and look at the output gddiag.png. It should look like the image in this tutorial.
Many quantities defined in the configuration files require units, which are one of
Unit designations are suffixed to the value and may be mixed
# 1 pixel padding padding = 1p # relative padding (e.g. relative to label width) padding = -0.25r # radius of track (relative to inner ideogram radius) r0 = 0.5r # combination of relative and pixel values r1 = 0.5r+200p
The reason why Circos insists on units is to reduce the strain of interpreting the configuration file parameters - a large number of custom values can quickly become opaque.