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

如何让levelplot内置色键标签字体匹配draw.colorkey生成的色键?

统一levelplot自带色键与draw.colorkey生成色键的标签字体

要让levelplot自带的小型色键和draw.colorkey生成的大型色键标签字体保持一致,核心是让两者使用相同的字体参数配置。这里有两种简单可行的方法:

方法一:单独为两个色键设置相同的字体参数

你可以先定义一套统一的标签字体配置,然后分别应用到levelplot的colorkey和draw.colorkey中:

  1. 首先加载lattice包并准备示例数据:
library(lattice)

# 生成示例数据
x <- seq(0, 1, length.out = 100)
y <- seq(0, 1, length.out = 100)
z <- outer(x, y, function(x, y) sin(x*pi)*cos(y*pi))
  1. 定义统一的字体设置(按需调整字体家族、大小、样式):
# 自定义色键标签的字体配置
key_label_config <- list(
  labels = list(
    cex = 1.1,          # 字体大小
    fontfamily = "Arial", # 字体家族
    fontface = "plain"   # 字体样式:plain/italic/bold
  )
)
  1. 应用配置到levelplot和draw.colorkey:
# 带自定义字体色键的levelplot
p <- levelplot(z ~ x*y, 
               colorkey = c(list(TRUE), key_label_config))
print(p)

# 用相同字体配置生成大型色键
big_colorkey <- draw.colorkey(key = list(
  col = terrain.colors(100), 
  at = do.breaks(range(z), 100),
  key_label_config$labels
))
# 把大型色键放到图的右侧
print(big_colorkey, position = c(0.8, 0.2, 0.9, 0.8), more = FALSE)

方法二:全局设置lattice的色键标签字体

如果希望所有lattice绘图的色键标签都统一字体,可以用trellis.par.set()全局配置,这样无需单独为每个色键设置参数:

library(lattice)

# 设置全局色键标签字体
trellis.par.set(
  par.key.text = list(
    fontfamily = "Arial",
    cex = 1.1,
    fontface = "bold"
  )
)

# 生成带默认色键的levelplot(自动使用全局字体)
p <- levelplot(z ~ x*y, colorkey = TRUE)
print(p)

# 生成大型色键(同样继承全局字体设置)
big_colorkey <- draw.colorkey(key = list(
  col = terrain.colors(100), 
  at = do.breaks(range(z), 100)
))
print(big_colorkey, position = c(0.8, 0.2, 0.9, 0.8), more = FALSE)

原理说明

  • levelplot的colorkey参数可以接受一个列表,其中的labels子列表和draw.colorkey的key参数中的labels配置完全对应,只要两者参数一致,字体就会统一。
  • trellis.par.set()中的par.key.text是lattice专门控制色键标签样式的全局参数,设置后所有色键(包括自带的和手动生成的)都会自动使用这个配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:59:25