Question: Using Circos plot to visualize RNA-seq data
gravatar for badredda
14 months ago by
badredda110 wrote:


I recently got myself into Circos. It is an amazing tool to visualize data. However, I am a bit lost and I require some help understanding how to proceed. I have RNA-seq data of differentially expressed genes (Log2 fold change) and I would like to plot them on Circos.

I would like to have a plot like the following figure if possible.

Circos Plot

What type of data representation should I choose for Circos plot in order to obtain such representation ?

Thank you in advance.

rna-seq circos visualization • 1.7k views
ADD COMMENTlink modified 13 months ago by bernatgel2.0k • written 14 months ago by badredda110

Without wishing to rain on your parade too much, I've never really seen a Circos visualisation that was actually useful.

They look good on posters and stuff maybe, but if you're actually trying to show something, consider other alternatives like labelled volcano plots or something.

ADD REPLYlink written 14 months ago by Joe14k

@badredda if you considering volcano plot then this is an elegant way to show volcano plot

ADD REPLYlink written 14 months ago by krushnach80580


Thanks everyone for your feedback.

@toralmanvar, I have edited the image. I hope it is showing now. @krushnach80, Yes, I checked the documentation in Circos and I tried to produce a similar plot like the on in the picture but I couldn't find any tutorial to plot similarly to the example mentioned above. @jrj.healey, yes I agree that a Circos plot may not be useful to interpret but when you are working on big data, it is nice to have a plot to see how all your samples behave.

Thanks all.

ADD REPLYlink modified 14 months ago • written 14 months ago by badredda110

hello badredda, but you have not attached the image properly. Please refer this post for adding image to biostar post.

ADD REPLYlink written 14 months ago by toralmanvar820

have you seen the circos manual they have some proper documentation have to make your datafiles as such given in the tutorial with chromosome number circos

ADD REPLYlink modified 14 months ago • written 14 months ago by krushnach80580

Maybe it's obvious to others, but what do the different tracks in the figure represent? e.g. What are the dots, and why are they different colours? What are the peaks? What format is your data in?

ADD REPLYlink written 14 months ago by Russ460

@ badredda In addition, add some data.

ADD REPLYlink modified 14 months ago • written 14 months ago by cpad011212k

@Russ, In the plot, the first outer-ring shows genes that are over-expressed and under-expressed relative to their position on the circos plot. The inner rings shows the density of the points.

ADD REPLYlink written 14 months ago by badredda110

You're trying to draw a scatter plot of log2 values of gene expression, correct? Have you looked at this tutorial? It explicitly defines the format your data should be in.

To change colours based on criteria (ie over- or under-expressed) you can create rules, explained here.

ADD REPLYlink written 14 months ago by Russ460

@Russ, thanks for the link, I will check it up and come back later with updates.

@cpad0112, sorry for late reply, my data looks like the following table:


And some downloadable data:

Thanks !

ADD REPLYlink written 14 months ago by badredda110

@ badredda

I am not sure of density plot inside circos as I do not see multiple points at any given coordinate (like SNPs or any other quantifiable information). However histogram and line plots are possible. P-values cannot be drawn unless they are transformed. with example data and Rcircos: Rplot

## Load libraries
## Set options
options(stringsAsFactors = FALSE)
options(scipen = 999)

## Read example data
data=read.csv("Example.tsv", sep="\t")
data$padj=round(data$padj,6) ## round adjusted p-values to 6 digits
data$pvalue=round(data$pvalue,6) ## round p-values to 6 digits

## Load cytoband data. Cytoband data downloaded from UCSC for hg38.
hg38=read.csv("../reference/hg38/hg38.cyto", strip.white = T, sep="\t", header=F)
# Order the chromosomes in human readable format

## Use biomart to download the coordinates for genes using gene symbols in user data
mart=useMart(biomart = "ensembl", dataset = "hsapiens_gene_ensembl")
coords=getBM(attributes = c("chromosome_name","start_position","end_position","hgnc_symbol"), filters="hgnc_symbol", values=data$external_gene_name, mart = mart)
## Remove non-standard chromosomes from biomart data
coords_pruned=coords[- grep("CHR_", coords$chromosome_name),]

## Merge user data and ensembl data output
merged_data=merge(data, coords_pruned, by.x="external_gene_name", by.y="hgnc_symbol")
## Extract the columns of interest

## Sort and append "chr" to the chromosome columns
## Plot circos
#png(paste0("circos.png"), width = 1200, height = 1200, units = "px",res = 80, type ="cairo")
chr.exclude <- "chrM" <- hg38_ordered
tracks.inside <- 10
tracks.outside <- 3, chr.exclude, tracks.inside, tracks.outside)
RCircos.Gene.Name.Plot(final_data_sorted, name.col = 6, track.num=2, side="in")
RCircos.Gene.Connector.Plot(final_data_sorted,  track.num = 1, side="in")
RCircos.Histogram.Plot(final_data_sorted,data.col=4, track.num=5, side="in")
RCircos.Line.Plot(final_data_sorted,data.col=4, track.num=4, side="in")
ADD REPLYlink written 13 months ago by cpad011212k
gravatar for Andrewoods
13 months ago by
Andrewoods90 wrote:

Maybe you want to try shinyCircos. It's an interactive APP.

ADD COMMENTlink written 13 months ago by Andrewoods90

Please note that further spamming will get your account suspended.

ADD REPLYlink written 13 months ago by RamRS24k

ywhzau : Please create a single new post under tool category to describe your application. Posting the same content in multiple threads is not the way to announce a tool you have developed.

ADD REPLYlink written 13 months ago by genomax71k
gravatar for bernatgel
13 months ago by
Barcelona, Spain
bernatgel2.0k wrote:

As @jrj.healey said, circos plot are pretty but they are not always your best bet, specially with lots of data. If you want a whole genome view of your data and position on the genome is important to you, you can use karyoploteR to create non-circular genome plots.

There's a specific example at the karyoploteR examples page on visualizing the results of a differential gene expression analysis that creates a plot like the one below. You can easily zoom-in to specific regions if you need a detailed view.

enter image description here

ADD COMMENTlink written 13 months ago by bernatgel2.0k
Please log in to add an answer.


Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 1955 users visited in the last hour