Matrix panel types

This section will provide details about the different types of panels in the command-line interface of fancplot.


This is the common triangular heatmap plot used primarily for Hi-C data, but which is compatible with all sort of input matrices, including difference and fold-change comparisons. You simply provide it with a FAN-C compatible matrix file:

fancplot chr18:6mb-10mb -p triangular output/hic/binned/fanc_example_50kb.hic

You often need to adjust the matrix saturation, to highlight different parts of the image. You can do this interactively with -r:

fancplot chr18:6mb-10mb -p triangular -r output/hic/binned/fanc_example_50kb.hic

Or by explicitly setting a maximum saturation using -vmax, in this case to 0.05.

You can truncate the triangle at a certain distance with -m for more compact plots:

fancplot chr18:6mb-10mb -p triangular -m 2mb -vmax 0.05 output/hic/binned/fanc_example_50kb.hic

You can also set the lower saturation values directly using -vmin:

fancplot chr18:6mb-10mb -p triangular -vmin 0 -vmax 0.03 output/hic/binned/fanc_example_50kb.hic

To change the default colormap use -c <matplotlib colormap> - any colormap in matplotlib is supported.

fancplot chr18:6mb-10mb -p triangular -c Greens -vmax 0.05 output/hic/binned/fanc_example_50kb.hic

You can change the color scale from linear to log using -l:

fancplot chr18:6mb-10mb -p triangular -l -vmax 0.05 output/hic/binned/fanc_example_50kb.hic

By default, triangular plots normalised matrix data. You can turn this off on the fly to plot uncorrected data using -u:

fancplot chr18:6mb-10mb -p triangular -u -vmax 30 output/hic/binned/fanc_example_50kb.hic

Similarly, you can convert the matrix on the fly to an observed/expected (O/E) matrix using -e. When using this option, the matrix values are automatically log-2 transformed and the colorscale adjusts to a divergent colormap symmetrical around 0.

fancplot chr18:6mb-10mb -p triangular -e -vmin -3 -vmax 3 output/hic/binned/fanc_example_50kb.hic


This plot is the common square matrix plot. It has nearly the same options as triangle and uses the same syntax:

fancplot chr18:6mb-10mb -p square -vmax 0.05 output/hic/binned/fanc_example_50kb.hic

In addition to triangle, square supports flipping the matrix upside-down with -f:

fancplot chr18:6mb-10mb -p square -f output/hic/binned/fanc_example_50kb.hic


The split plot divides a heatmap along the diagonal to compare two matrices. split requires those matrices to be binned at the same resolution (or have identical region definitions), as they are combined into a single merged matrix on the fly. Besides providing two input matrices, one for the top and one for the bottom half of the heatmap, the plot works in the same way as square.

The plot assumes that the matrices are directly comparable and have been normalised to the same sequencing depth. If this is not the case, you can scale the matrices using the -s parameter, but note that this could potentially take a very long time.


The mirror plot is built from two triangular heatmaps, the bottom one is flipped upside-down to give the effect of a reflection along the horizontal axis. This can be used to compare different matrices, including the same Hi-C dataset binned at different resolutions:

fancplot chr18:6mb-10mb -p mirror -d 3mb output/hic/binned/fanc_example_50kb.hic output/hic/binned/fanc_example_100kb.hic

As this plot essentially consists of two triangular plots stapled together, the parameters for the top and bottom plot can also be controlled independently. The parameter names match those of the triangular plot, but with the u prefix for the upper and l prefix for the lower plot: --uvmin, --uvmax, --uc, --ue and --lvmin, --lvmax, --lc, --le.

Here is one more example showing a matrix and its O/E transformed version:

fancplot chr18:6mb-10mb -p mirror -d 3mb -le -lvmin -2 -lvmax 2 output/hic/binned/fanc_example_50kb.hic output/hic/binned/fanc_example_50kb.hic