load the tsv data into a dataframe called mygenes.

install the package ‘plotly’

mygenes <- read.table('~/gene_dist_head.tsv',header=TRUE)
install.packages('plotly')
trying URL 'https://cran.rstudio.com/bin/macosx/el-capitan/contrib/3.6/plotly_4.9.0.tgz'
Content type 'application/x-gzip' length 2801589 bytes (2.7 MB)
==================================================
downloaded 2.7 MB

The downloaded binary packages are in
    /var/folders/zj/8tv7p4jn2gbbx9n49kbzwzt80000gn/T//RtmpvKjieG/downloaded_packages

put in a summary of my genes into a data frame

summary(mygenes)
                transcript_type           feature             chr         
 protein_coding         :2001054   exon       :1306656   1      : 238010  
 nonsense_mediated_decay: 293471   CDS        : 791856   2      : 189916  
 processed_transcript   : 173401   UTR        : 304070   17     : 166529  
 retained_intron        : 150034   transcript : 215170   19     : 163304  
 lincRNA                :  55928   stop_codon :  73411   3      : 159475  
 antisense              :  45811   start_codon:  73358   11     : 157597  
 (Other)                : 108613   (Other)    :  63791   (Other):1753481  
     start                end           
 Min.   :      577   Min.   :      647  
 1st Qu.: 31698816   1st Qu.: 31700419  
 Median : 56565463   Median : 56566763  
 Mean   : 73148763   Mean   : 73152067  
 3rd Qu.:108204790   3rd Qu.:108206944  
 Max.   :249230780   Max.   :249231242  
                                        

Test_graph.r script

library(ggplot2) # We load in libraries
library(plotly)
Registered S3 method overwritten by 'data.table':
  method           from
  print.data.table     
Registered S3 methods overwritten by 'htmltools':
  method               from         
  print.html           tools:rstudio
  print.shiny.tag      tools:rstudio
  print.shiny.tag.list tools:rstudio
Registered S3 method overwritten by 'htmlwidgets':
  method           from         
  print.htmlwidget tools:rstudio

Attaching package: ‘plotly’

The following object is masked from ‘package:ggplot2’:

    last_plot

The following object is masked from ‘package:stats’:

    filter

The following object is masked from ‘package:graphics’:

    layout
# We define a factor set of autosomes
autosomes<-c("1","2","3","4","5","6","7","8","9","10",
 "11","12","13","14","15","16","17","18","19","20","21","22")  
# We create a new dataframe called 'genes' which only has autosomes, however we still have those additional factors
genes<- mygenes[ which(mygenes$chr %in% autosomes), ] 
# We remove the factors and then order them so they are numerical order and not alphabetical
genes$chr <- factor(genes$chr, levels = autosomes) 
 # We plot in ggplot 
ggplot(data = genes) +  geom_bar(mapping = aes(x = chr, fill = feature), width = 1)

lets go to polar coordinates:

ggplot(data = genes) +
 geom_bar(mapping = aes(x = chr, fill = feature), width = 1) +
 coord_polar()

using ggplotly to create interactive grap:

aa<-ggplot(data = genes) +  geom_bar(mapping = aes(x = chr, fill = feature), width = 1)
ggplotly(aa)
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyBsb2FkIHRoZSB0c3YgZGF0YSBpbnRvIGEgZGF0YWZyYW1lIGNhbGxlZCBteWdlbmVzLgojIGluc3RhbGwgdGhlIHBhY2thZ2UgJ3Bsb3RseScKYGBge3J9Cm15Z2VuZXMgPC0gcmVhZC50YWJsZSgnfi9nZW5lX2Rpc3RfaGVhZC50c3YnLGhlYWRlcj1UUlVFKQppbnN0YWxsLnBhY2thZ2VzKCdwbG90bHknKQpgYGAKCiMgcHV0IGluIGEgc3VtbWFyeSBvZiBteSBnZW5lcyBpbnRvIGEgZGF0YSBmcmFtZQpgYGB7cn0Kc3VtbWFyeShteWdlbmVzKQpgYGAKCiMgVGVzdF9ncmFwaC5yIHNjcmlwdApgYGB7cn0KbGlicmFyeShnZ3Bsb3QyKSAjIFdlIGxvYWQgaW4gbGlicmFyaWVzCmxpYnJhcnkocGxvdGx5KQojIFdlIGRlZmluZSBhIGZhY3RvciBzZXQgb2YgYXV0b3NvbWVzCmF1dG9zb21lczwtYygiMSIsIjIiLCIzIiwiNCIsIjUiLCI2IiwiNyIsIjgiLCI5IiwiMTAiLAogIjExIiwiMTIiLCIxMyIsIjE0IiwiMTUiLCIxNiIsIjE3IiwiMTgiLCIxOSIsIjIwIiwiMjEiLCIyMiIpICAKIyBXZSBjcmVhdGUgYSBuZXcgZGF0YWZyYW1lIGNhbGxlZCAnZ2VuZXMnIHdoaWNoIG9ubHkgaGFzIGF1dG9zb21lcywgaG93ZXZlciB3ZSBzdGlsbCBoYXZlIHRob3NlIGFkZGl0aW9uYWwgZmFjdG9ycwpnZW5lczwtIG15Z2VuZXNbIHdoaWNoKG15Z2VuZXMkY2hyICVpbiUgYXV0b3NvbWVzKSwgXSAKIyBXZSByZW1vdmUgdGhlIGZhY3RvcnMgYW5kIHRoZW4gb3JkZXIgdGhlbSBzbyB0aGV5IGFyZSBudW1lcmljYWwgb3JkZXIgYW5kIG5vdCBhbHBoYWJldGljYWwKZ2VuZXMkY2hyIDwtIGZhY3RvcihnZW5lcyRjaHIsIGxldmVscyA9IGF1dG9zb21lcykgCiAjIFdlIHBsb3QgaW4gZ2dwbG90IApnZ3Bsb3QoZGF0YSA9IGdlbmVzKSArICBnZW9tX2JhcihtYXBwaW5nID0gYWVzKHggPSBjaHIsIGZpbGwgPSBmZWF0dXJlKSwgd2lkdGggPSAxKQpgYGAKCiMgbGV0cyBnbyB0byBwb2xhciBjb29yZGluYXRlczoKYGBge3J9CmdncGxvdChkYXRhID0gZ2VuZXMpICsKIGdlb21fYmFyKG1hcHBpbmcgPSBhZXMoeCA9IGNociwgZmlsbCA9IGZlYXR1cmUpLCB3aWR0aCA9IDEpICsKIGNvb3JkX3BvbGFyKCkKYGBgCgojIHVzaW5nIGdncGxvdGx5IHRvIGNyZWF0ZSBpbnRlcmFjdGl2ZSBncmFwOgpgYGB7cn0KYWE8LWdncGxvdChkYXRhID0gZ2VuZXMpICsgIGdlb21fYmFyKG1hcHBpbmcgPSBhZXMoeCA9IGNociwgZmlsbCA9IGZlYXR1cmUpLCB3aWR0aCA9IDEpCmdncGxvdGx5KGFhKQpgYGA=