You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R的heatmap()中控制X轴标签:解决截断与旋转问题

解决R中heatmap()函数长列标签旋转问题

原生base R的heatmap()函数没有直接提供旋转X轴(列)标签的参数,默认会截断长标签。不过可以通过以下两种方式解决:

方法一:手动添加旋转后的标签(原生R实现)

先绘制热图时隐藏默认列标签,再用mtext()手动添加带旋转角度的标签:

x <- c(13,12,7,5,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
y <- c(0,0,0,0,0,12,9,9,7,5,4,4,2,0,0,0,0,0,0,0)
z <- c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,3,1)

m <- matrix(c(x, y, z), ncol = 3)
col_labels <- c("Brassica oleracea var italia", "Brassica oleracea var capitata", "Cynara cardunculus var scolymus")

# 绘制热图,隐藏默认列标签
heatmap(m, Rowv = NA, Colv = NA, scale = "none", colnames = NA, cexCol = 0.5)

# 添加45度旋转的列标签,调整位置避免截断
mtext(col_labels, side = 3, line = 2, at = seq(0.15, 0.85, length.out = length(col_labels)), 
      srt = 45, cex = 0.5)
  • side = 3 指定标签放在顶部(对应原heatmap的列标签位置)
  • srt = 45 设置标签旋转45度,如需垂直旋转可改用las = 2
  • at 参数控制每个标签的水平位置,需根据列数调整序列范围

方法二:使用第三方包简化操作

如果不想手动调整位置,可以使用gplots包的heatmap.2()函数,它直接支持srtCol参数设置列标签旋转角度:

install.packages("gplots") # 首次使用需安装
library(gplots)

heatmap.2(m, Rowv = NA, Colv = NA, scale = "none", cexCol = 0.5, srtCol = 45)

内容的提问来源于stack exchange,提问作者user237554

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:23:22