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

如何在R中使用ggplot绘制由红蓝方块组成的矩阵网格图

R 实现方案

核心思路

用geom_tile()绘制方块,将矩阵转换为ggplot要求的长格式数据后,手动映射one/two到对应颜色即可。

完整步骤

  • 第一步:构造并转换数据
    你可以选择base R或者tidyverse流派的转换方法,效果一致:
# 加载绘图必备包
library(ggplot2)

# 构造原始矩阵
raw_mat <- matrix(
  c("one", "two", "two", "one", "one", "two",
    "one", "two", "one", "two", "two", "one",
    "two", "one", "two", "two", "one", "two"),
  nrow = 3, byrow = TRUE
)

# ---------------base R 数据转换方法(无需额外装包)---------------
mat_df <- as.data.frame.table(raw_mat)
colnames(mat_df) <- c("row", "col", "value")

# ---------------tidyverse 数据转换方法(可选,适合习惯tidy语法的用户)---------------
# 需要提前加载 library(tibble) 和 library(tidyr)
# mat_df <- as.data.frame(raw_mat) %>%
#   rownames_to_column("row") %>%
#   pivot_longer(-row, names_to = "col", values_to = "value")
  • 第二步:绘制网格图
ggplot(mat_df, aes(x = col, y = rev(row))) + # 反转行顺序,保证矩阵第一行展示在图的上方,符合阅读习惯
  geom_tile(aes(fill = value), color = "white", size = 1) + # color是方块分隔线颜色,size是分隔线粗细,可自行调整
  scale_fill_manual(values = c("one" = "red", "two" = "blue")) +
  theme_void() + # 清除多余的坐标轴、背景等非核心元素
  theme(legend.position = "none") # 不需要图例可保留此行,需要图例直接删除即可

可选调整

  • 如果你需要保留行号列号,删除theme_void()即可,ggplot会默认展示坐标轴标签
  • 方块大小可以通过coord_fixed(ratio = 1)调整,默认是等宽高的正方形

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:54:01