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

如何让ggplot2热力图X轴类别按数据集原有顺序排列而非字母序

解决热力图轴类别按CSV原有顺序排列的问题

问题核心是ggplot会自动将字符型变量按字母顺序排序,要保留CSV中Term列的原始顺序,只需把Term转为因子类型并指定水平顺序为原数据的顺序即可。

修改后的代码

library(ggplot2)
library(reshape)
getwd()
x <- read.csv("R.csv", check.names = F)

# 将Term转为因子,锁定原始顺序
x$Term <- factor(x$Term, levels = x$Term)

y <- melt(x, id="Term")

ggplot(y, aes(variable, Term, fill=value)) +
  geom_tile() +
  coord_flip() +
  scale_fill_manual(values = c("#FFE5CC","#FF9934"), guide = guide_legend(reverse = TRUE)) +                   
  theme(legend.title = element_text(color = "black", size = 10),
        axis.title = element_blank(),
        axis.text.x = element_text(angle = 90, vjust = .5, hjust = 1, color = "black", size="7"),
        axis.text.y = element_text(color = "black", size="12")) +
  scale_x_discrete(expand=expansion(0), limits=rev) +
  scale_y_discrete(expand=expansion(0))

关键说明

  • 在读取CSV后添加的x$Term <- factor(x$Term, levels = x$Term)是核心:将Term列转为因子类型,通过levels参数指定其顺序与原CSV中Term列的顺序完全一致,这样ggplot绘图时就不会自动按字母排序。
  • 由于你使用了coord_flip(),翻转后原本的Y轴(Term)变为X轴,因此这个修改会直接让翻转后的X轴保持CSV里的原始类别顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:55:22