登录
首页 >  文章 >  python教程

RGB与普朗克轨迹叠加解析

时间:2026-03-15 12:15:43 140浏览 收藏

本文深入解析了如何利用Colour Science库与matplotlib协同实现RGB色彩空间与普朗克轨迹在CIE 1931色度图中的精准叠加可视化,直击初学者常遇的“图形覆盖”痛点——关键在于摒弃默认自动创建画布的惯用方式,转而显式获取并复用同一axes对象,通过底层函数(如temperature模块中的plot_planckian_locus)注入共享坐标系,从而无缝整合色彩空间边界、黑体辐射轨迹、标准光源点等多层信息;文末附有即用型代码示例与四大实操要点提示,助你快速构建专业级色彩分析图表,并为后续扩展色差椭圆、自定义色块等高阶可视化奠定坚实基础。

本文详解如何使用 Colour Science 库将多个色度图元素(如 RGB 色彩空间和普朗克轨迹)统一绘制于同一张 CIE 1931 色度图中,核心在于复用 matplotlib 的 `axes` 对象而非依赖独立绘图函数的 `show` 参数。

在 Colour Science 中,各类色度图绘制函数(如 plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931 和 plot_planckian_locus_in_chromaticity_diagram_CIE1931)默认会创建新图形(figure)和坐标轴(axes),并自动调用 plt.show()。若直接连续调用且设置 show=False,第二幅图仍会清空或覆盖前一幅图——这是因为它们各自管理独立的绘图上下文,无法天然叠加。

正确做法是显式获取并复用同一组 axes。具体流程如下:

  1. 首先调用任一绘图函数(推荐从色彩空间开始),传入 show=False,并捕获其返回的 (figure, axes) 元组;
  2. 将该 axes 对象作为参数传递给后续绘图函数(注意:需使用底层模块中支持 axes 参数的版本,例如 colour.plotting.temperature.plot_planckian_locus);
  3. 最后统一调用 plt.show() 显示整合后的图形。

以下是完整可运行示例:

import colour
import matplotlib.pyplot as plt

# 第一步:绘制 RGB 色彩空间,不显示,获取 axes
fig, ax = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931(
    ["ITU-R BT.709", "ITU-R BT.2020"],
    show=False,
    chromaticity_diagram_callable=colour.plotting.plot_chromaticity_diagram_CIE1931  # 确保底层色度图一致
)

# 第二步:在同一 axes 上叠加普朗克轨迹(注意使用 temperature 模块下的函数)
colour.plotting.temperature.plot_planckian_locus(
    axes=ax,
    show=True,  # 此处 show=True 仅控制最终显示,不影响叠加逻辑
    locus_colours='black',
    locus_kwargs={'linewidth': 1.2}
)

# 可选:添加光源点(如标准照明体 A、D65)
illuminants = ['A', 'D65']
colour.plotting.plot_chromaticity_diagram_colourspace_visualization(
    illuminants=illuminants,
    axes=ax,
    plot_kwargs={'marker': 'o', 'markersize': 8, 'color': 'red'}
)

plt.show()

⚠️ 注意事项:

  • 不要混用高层封装函数(如 plot_planckian_locus_in_chromaticity_diagram_CIE1931)与底层 axes 接口——后者未暴露 axes 参数;应改用 colour.plotting.temperature.plot_planckian_locus 并手动指定 chromaticity_diagram_callable;
  • 所有叠加操作必须基于同一个 axes 实例,确保坐标系、刻度、图例等完全对齐;
  • 若需自定义样式(颜色、线宽、标记),优先通过各函数的 *kwargs(如 locus_kwargs, plot_kwargs)传入,避免后续手动修改 ax 属性导致逻辑耦合;
  • 建议显式导入 matplotlib.pyplot 并最后调用 plt.show(),以增强代码可控性与调试便利性。

通过该方法,你不仅能实现 RGB 色域与黑体辐射轨迹的精准叠加,还可进一步扩展至光源点标注、色差椭圆、自定义色块等多层可视化任务,为色彩科学分析提供高度灵活的图形表达能力。

理论要掌握,实操不能落!以上关于《RGB与普朗克轨迹叠加解析》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>