R 绘制列的热图顺序

R 绘制列的热图顺序,r,heatmap,plotly,R,Heatmap,Plotly,可能很简单: 我有一个带有NA的数字矩阵: mat <- matrix(c(NA,NA,NA,NA,NA,NA,NA,19.24,NA,NA,NA,NA,17.67,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,17.67,NA,NA,NA,NA,17.67,NA,NA,NA,NA,NA,NA,17.67,17.67,17.67,17.67,17.67,17.67,17.67,19.24,13.48,NA,NA,NA,NA,17.67,NA,NA,NA,NA,NA,NA

可能很简单:

我有一个带有NA的数字矩阵:

mat <- matrix(c(NA,NA,NA,NA,NA,NA,NA,19.24,NA,NA,NA,NA,17.67,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,17.67,NA,NA,NA,NA,17.67,NA,NA,NA,NA,NA,NA,17.67,17.67,17.67,17.67,17.67,17.67,17.67,19.24,13.48,NA,NA,NA,NA,17.67,NA,NA,NA,NA,NA,NA,NA,NA,NA,17.67,NA,NA,NA,NA,17.67,NA,NA,NA,NA,NA,NA,NA,17.67,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,13.48),
                     nrow=9,ncol=10)
colnames(mat) <- c("11","5","6","2","10","7","4","3","9","8")
rownames(mat) <- c("biological adhesion","cell adhesion","cell communication",
                   "cell surface receptor signaling pathway","cellular response to stimulus",
                   "signal transduction","signaling","single organism signaling",
                   "single organismal cell-cell adhesion")

但列标签似乎与我指定的不一致:

> colnames(mat)
 [1] "11" "5"  "6"  "2"  "10" "7"  "4"  "3"  "9"  "8" 
有什么想法吗


此外,是否有任何方法可以使y轴标签完全可见?

您必须指定plotly不应通过更改以下布局选项来更改类别顺序:

p <- plot_ly(z = mat, x = colnames(mat), y=rownames(mat),type="heatmap") %>%
  layout(xaxis = list(categoryorder = "trace"))
p
p%
布局(xaxis=list(categoryorder=“trace”))
P

看起来像是
plot\u ly
正在排序轴标签-可能是个bug?对于边距部分:您可以尝试添加
%%>%plotly::layout(边距=列表(l=300))
以给标签更多空间。是的。我设置边距的问题是,每次需要在具有不同行标签的不同数据集上运行此代码时,都需要调整边距。对于x轴标签,它确实能够精确地计算出刻度角度和边距,所以我很惊讶,对于y轴,人们需要使用边距,也许最大字符数可以为边距增加一倍。考虑到排序“错误”:
plot_ly()%%>%add_heatmap(z=~mat,x=factor(colnames(mat),lev=colnames(mat)),y=factor(rownames(mat),lev=rownames(mat)))%%>%layout(margin=list(l=250))
实现了这一技巧,这里有文档记载:。我认为最新的开发版本(8天前)有一个修复程序:
p <- plot_ly(z = mat, x = colnames(mat), y=rownames(mat),type="heatmap") %>%
  layout(xaxis = list(categoryorder = "trace"))
p