使用Plotly创建带数值行名的热力图遇问题求解决方案
解决Plotly中数值行名热力图的问题
当数据集行名为数值类型时,直接用rownames(data)传递给Plotly的y参数会导致y轴被当作连续数值处理,出现布局或显示异常。只需将数值行名显式转换为字符类型,就能让Plotly将其识别为离散类别,正常渲染热力图。
修改后的完整代码
set.seed(051939) df <- data.frame(loci = sample(1000:5000, size = 50, replace = TRUE), a = runif(50), b = runif(50)) df <- tibble::column_to_rownames(df, "loci") data <- as.matrix(df) # 核心修改:将行名转为字符型,确保Plotly识别为离散类别 plotly::plot_ly( x = colnames(data), y = as.character(rownames(data)), z = data, type = "heatmap" )
补充优化(可选)
如果需要让y轴按数值大小排序显示,可以在转换字符后,通过layout参数指定类别顺序:
plotly::plot_ly( x = colnames(data), y = as.character(rownames(data)), z = data, type = "heatmap" ) %>% plotly::layout( yaxis = list( categoryorder = "array", categoryarray = as.character(sort(as.numeric(rownames(data)))) ) )
内容的提问来源于stack exchange,提问作者MicroBiostat
相关产品推荐
相关产品推荐

