Use the latest version of Circos and read Circos best practices—these list recent important changes and identify sources of common problems.
If you are having trouble, post your issue to the Circos Google Group and include all files and detailed error logs. Please do not email me directly unless it is urgent—you are much more likely to receive a timely reply from the group.
Don't know what question to ask? Read Points of View: Visualizing Biological Data by Bang Wong, myself and invited authors from the Points of View series.
In this example, I create an image with a large number of plot tracks that include all the types previously discussed. The image looks like a heart attack and I don't recommend that you create such monstrosities for any reasons other than exploring Circos' syntax.
Several of the idioms in the configuration file are worth exploring in detail.
When a highlight is defined as a plot block, you can use the z depth to place it anywhere within other data layers.
In this figure, the highlight wedges are drawn ontop of the heatmaps, but under the line, histogram, line and tile plots.
You can choose to hide data points randomly by using a rule that incorporates a call to a random number generator. The Perl function rand() returns a random number sampled uniformly from the interval [0,1).
<rule> condition = rand() < 0.1 show = no </rule>
In this case, 10% of the data points, on average, will not appear. Each time the image is created, a different set of points will be hidden.
Along the lines of the previous example, you can apply formatting randomly to data. For example, to make 50% of the points, on average, red:
<rule> condition = rand() < 0.5 color = red </rule>
You can hide heatmap elements using the show=no idiom with a size condition. You can also subvert the color list and include the background color in the list.
<plot> type = heatmap ... color = black,grey,vlgrey,white,lgreen,green,dgreen ... </plot>
You can create a floating bar plot by stacking two histograms against one another. The outer histogram is oriented "out" and the inner one is oriented "in".
<plot> type = histogram ... orientation = in r0 = 0.65r r1 = 0.75r ... </plot> <plot> type = histogram ... orientation = out r0 = 0.75r r1 = 0.85r ... </plot>
Don't forget that you can adjust the radius of individual ideograms, or regions.
chromosomes = hs2[a]:5-35;hs2[b]:40-75;hs2[c]:80-115;hs2[d]:120-155;hs2[e]:160-195;hs2[f]:200-240 chromosomes_radius = a:0.95r;b:0.9r;c:0.85r;d:0.8r;e:0.75r;f:0.7r
This is very useful if you need to squeeze in a data track, especially outside of the ideogram, but don't want to disturb the overall circular nature of the plot. In this case, you would shift the ideogram radius in by, say, 200px, and then plot a 200px track outside the ideogram.