dan
dan

Reputation: 6314

R plotly heatmap tick labels being cutoff

Trying to produce a gene-expression heatmap using R's plotly. The gene names are quite long and the dimensions are quite big:

require(permute)
require(plotly)
set.seed(1)
mat <- matrix(shuffle(c(rnorm(5000,2,1),rnorm(5000,-2,1))),nrow=2500,ncol=4)
rownames(mat) <- paste("very_long_gene_name",1:2500,sep=".")
colnames(mat) <- paste("s",1:4,sep=".")

Clustering:

hc.col <- hclust(dist(t(mat)))
dd.col <- as.dendrogram(hc.col)
col.order <- order.dendrogram(dd.col)
hc.row <- hclust(dist(mat))
dd.row <- as.dendrogram(hc.row)
row.order <- order.dendrogram(dd.row)
mat <- mat[row.order,col.order]

Producing the plot and saving the html file:

heatmap.plotly <- plot_ly(x=colnames(mat),y=rownames(mat),z=mat,type="heatmap",colors=colorRamp(c("darkblue","white","darkred")))
htmlwidgets::saveWidget(heatmap.plotly,"heatmap.plotly.html")

The figure I get has the gene names cut off, and I'm not sure it's presenting all the data: enter image description here

Any idea how to fix these two issues?

Upvotes: 1

Views: 1149

Answers (1)

Djork
Djork

Reputation: 3369

Increase your margins

m <- list(
  l = 200,
  r = 10,
  b = 50,
  t = 10,
  pad = 2
)
heatmap.plotly <- plot_ly(x=colnames(mat),y=rownames(mat),z=mat,type="heatmap",
    colors=colorRamp(c("darkblue","white","darkred"))) %>%
    layout(margin = m)

heatmap.plotly

Upvotes: 3

Related Questions