first_eys_munsell

在研究ggplot2的layer时看到了一个新的的颜色系统关于颜色,我可以说真的是一个色盲吗?关 于颜色的基本概念其实是毫无兴趣去了解,但是当看到这里的时候却想去真正的理解,这三个概念到底所表达的是什么意思?大 概这就是缘分吧。

Code
#------------------------------------------------------------r20250226064947
# install.packages("munsell")
library(munsell)

检查颜色是否有效

mnsl(“5PB 5/10”) # 正常显示颜色 mnsl(“5PB 2/20”) # 可能因色度过高报错,需用 fix_mnsl() 自动修正

修正无效颜色

fixed_color <- fix_mnsl(“5PB 2/20”) cat(“修正后的颜色代码:”, fixed_color, “”) # 输出 “5PB 2/12”`


5. 注意事项

  • 色域限制:并非所有理论颜色都能在屏幕/印刷中显示,高色度颜色可能需要修正。

  • 格式统一:代码需严格遵循 H V/C 格式(如 5PB 5/10,不可写作 5PB5/10)。

  • 应用场景

    • 设计领域:用于品牌色标准化(如 Pantone 色卡)。

    • 科学研究:土壤分类、植物学中的颜色记录。

通过练习,你可以快速用孟塞尔系统精准描述颜色需求,减少沟通误差。

1. R 基础颜色函数

  • colors() / colours()

    • 功能:返回 R 内置颜色名称列表(657 种)。

    • 参数:distinct = TRUE 去重后返回 502 种。

    • 错误示例:colors("springgreen") ❌(参数需为逻辑值 TRUE/FALSE)。

    • 正确用法:"springgreen" %in% colors() ✅ 验证颜色是否存在。

  • 颜色转换工具

    • col2rgb("red"):转为 RGB 值。

    • rgb(1, 0, 0):生成十六进制颜色代码。

    • colorRampPalette(c("red", "blue"))(10):生成渐变色。


2. 孟塞尔颜色系统与 munsell 包

  • 颜色代码格式H V/C(如 5PB 5/10)。

    • 色相(Hue)PB(Purplish Blue),范围 0-10,通常以 2.5 为间隔(如 2.5PB)。

    • 明度(Value)0(黑)到 10(白)。

    • 色度(Chroma)0(灰)到理论无限大(实际受设备限制)。

  • 核心函数

    • mnsl("5PB 5/10"):生成颜色,需符合标准间隔(如 5PB 有效,0PB 无效)。

    • fix_mnsl("0PB 2/20"):自动修正无效代码(如转为 2.5PB 2/12)。

    • mnsl2hex("5PB 5/10"):转为十六进制颜色码(如 #3E6EA6)。

  • ggplot2 结合

    R

    ggplot(mtcars, aes(wt, mpg, color = factor(cyl))) + geom_point() + scale_color_manual(values = mnsl(c("5R 5/8", "5Y 5/8", "5G 5/8")))


3. 常见问题与解决

  • mnsl() 报错

    • 原因:色相值非标准间隔(如 0PB 或 9PB)。

    • 解决:使用 2.5 的倍数(如 2.5PB)或 fix_mnsl() 自动修正。

  • 色域限制:高色度值可能超出显示范围,需修正为有效值。


4. 扩展工具与资源


5. 实践建议

  • 科学配色:用孟塞尔代码确保颜色一致性(如论文、品牌设计)。

  • 自动化修正:优先使用 fix_mnsl() 避免手动试错。

  • 可视化检查hue_slice("5PB") 查看色相切片,辅助理解色域。

掌握这些工具,你可以更高效地在 R 中实现精准颜色控制! 🎨