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

求解:如何绘制以Majors为X轴、MEASURES为Y轴的多变量可视化图表

R语言可视化需求解决方案

问题背景

我有如下R语言数据框:

DF <- data.frame(Majors = c('Sam', 'Bob', 'Henry', 'John', 'Ted', 'Carl', 
                          'Robert', 'Matt', 'Jared', 'Jack', 'Greg', 
                          'Arthur', 'Glenn'), 
                 MEASURES = c('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 
                              'I', 'J', 'K', 'L', 'M'), 
                 LCOs = c(1.1, 2.1, 3.3, 4.1, 1.2, 1.1,
                          2.4, 3.3, 2.3, 1.1, 2.1, 1.4, 7), 
                 Years=c('2017-2018', '2017-2018', '2017-2018', 
                         '2018-2019', '2018-2019', '2018-2019',
                         '2018-2019', '2019-2020', '2020-2021', 
                         '2020-2021', '2020-2021', '2020-2021', 
                         '2021-2022'))

需要制作满足以下要求的可视化内容:

  • X轴(底部)为Majors,Y轴(侧边)为MEASURES
  • 对应位置展示LCOs的数值
  • 用颜色区分不同Years的条目

尝试过ggplot2和kable未达到预期效果,寻求可行方案。


方案1:使用gt包生成可视化表格

gt包专门用于制作美观的静态/交互式表格,完美匹配需求:

步骤1:安装并加载包

install.packages("gt")
library(gt)

步骤2:生成可视化表格

DF %>%
  # 设置行名为MEASURES,列名为Majors
  gt(rowname_col = "MEASURES", colname_col = "Majors") %>%
  # 按Years设置单元格背景色
  data_color(
    columns = everything(),
    colors = scales::col_factor(
      palette = c("#1f77b4", "#ff7f0e", "#2ca02c", "#d62728"), # 自定义调色板
      domain = unique(DF$Years)
    ),
    apply_to = "fill"
  ) %>%
  # 格式化LCOs数值为1位小数
  fmt_number(columns = everything(), decimals = 1) %>%
  # 添加标题和注释
  tab_header(title = "LCOs 按专业与指标分布") %>%
  tab_source_note(source_note = "颜色对应不同学年")

生成的表格会以MEASURES为行、Majors为列,单元格显示LCOs数值,背景色对应所属Years,支持自定义调色板和格式。


方案2:使用ggplot2制作热力图

如果更倾向于图表形式,ggplot2可以实现带文本标注的热力图:

步骤1:安装并加载包

install.packages("ggplot2")
library(ggplot2)

步骤2:生成热力图

ggplot(DF, aes(x = Majors, y = MEASURES)) +
  # 绘制单元格背景,按Years填充颜色
  geom_tile(aes(fill = Years), color = "white") +
  # 添加LCOs数值标注
  geom_text(aes(label = LCOs), color = "black", size = 4) +
  # 使用内置调色板
  scale_fill_brewer(palette = "Set2") +
  # 添加标题和坐标轴标签
  labs(title = "LCOs 热力分布图", x = "专业", y = "指标", fill = "学年") +
  # X轴标签倾斜45度避免重叠
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

该图表将Majors置于X轴,MEASURES置于Y轴,每个单元格颜色对应Years,同时显示LCOs数值,布局清晰直观。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:47:33