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

如何为分类数据的Levelplot设置离散式图例?

问题描述

我想用以下代码基于矩阵生成Levelplot:

library("lattice")
x <- c(0:10)
y <- seq(0, 0.9, by=0.1)
# 修正原代码未定义的变量,替换为已声明的x和y
z <- expand.grid(x, y)
val <- sample(c("A","B","C"), 110, replace = T)
z$value <- as.factor(val)
levelplot(value ~ Var1*Var2, data=z, main="")

其中value为分类数据,请问如何将图例设置为离散标签(每个类别对应独立颜色块与标签)?


解决方法

要给分类数据的levelplot配置离散图例,核心是通过colorkey或key参数自定义图例规则,具体实现如下:

1. 快速配置离散图例

直接通过colorkey参数定义离散标签与颜色映射,代码简洁易维护:

library("lattice")

# 数据准备
x <- c(0:10)
y <- seq(0, 0.9, by=0.1)
z <- expand.grid(x, y)
val <- sample(c("A","B","C"), 110, replace = T)
z$value <- as.factor(val)

# 定义分类颜色(可根据需求替换)
category_cols <- c("#4e79a7", "#59a14f", "#e15759")
names(category_cols) <- levels(z$value)

# 绘制带离散图例的Levelplot
levelplot(value ~ Var1*Var2, 
          data=z, 
          main="分类数据Levelplot",
          col.regions = category_cols,  # 绑定分类与颜色
          colorkey = list(
            space = "right",  # 图例位置
            labels = list(at = 1:length(levels(z$value)), 
                          labels = levels(z$value)),  # 设置离散标签
            width = 1,  # 图例宽度
            height = 0.8  # 图例高度
          )
)

2. 自定义精细图例样式

如果需要更贴近参考图的紧凑布局,可关闭默认图例,用key参数手动构建图例元素:

levelplot(value ~ Var1*Var2, 
          data=z, 
          main="分类数据Levelplot",
          col.regions = category_cols,
          colorkey = FALSE,  # 关闭默认图例
          key = list(
            space = "right",
            rectangles = list(col = category_cols),  # 生成颜色块
            text = list(labels = levels(z$value)),  # 对应分类标签
            columns = 1  # 图例按单列排列
          )
)

关键说明

  • col.regions用于指定每个分类对应的颜色,确保颜色与类别一一映射
  • colorkey适合快速配置离散图例,参数调整灵活
  • 用key参数可高度自定义图例的布局、元素样式,满足个性化需求

内容的提问来源于stack exchange,提问作者Xia.Song

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:40:06