
本文详解如何使用colour science库将多个色彩可视化元素(如rgb色域和黑体辐射轨迹)统一绘制于同一cie1931色度图中,避免图形覆盖或显示冲突,核心在于复用matplotlib轴对象(axes)而非多次调用show=true。
本文详解如何使用colour science库将多个色彩可视化元素(如rgb色域和黑体辐射轨迹)统一绘制于同一cie1931色度图中,避免图形覆盖或显示冲突,核心在于复用matplotlib轴对象(axes)而非多次调用show=true。
在色彩科学分析与可视化中,常需在同一色度图(如CIE 1931 xy chromaticity diagram)中对比不同色彩实体——例如同时展示ITU-R BT.709与BT.2020等RGB色域边界,以及代表理想黑体光源演化的普朗克轨迹(Planckian locus)。但直接连续调用多个plot_...(..., show=True)函数会导致前一个图形被关闭或覆盖,无法实现叠加效果。
正确做法是显式获取并复用绘图轴(axes)对象:首次绘图时设置show=False,保留返回的figure和axes;后续绘图函数通过axes=参数将新元素绘制到同一坐标系中,最终统一调用plt.show()呈现整合结果。
以下为完整可运行示例:
import colour
import matplotlib.pyplot as plt
# 第一步:绘制RGB色域(不立即显示)
fig, ax = colour.plotting.plot_RGB_colourspaces_in_chromaticity_diagram_CIE1931(
["ITU-R BT.709", "ITU-R BT.2020"],
show=False,
standalone=False # 确保不触发自动显示
)
# 第二步:在同一axes上叠加普朗克轨迹(注意:使用temperature子模块)
colour.plotting.temperature.plot_planckian_locus(
axes=ax,
show=False,
planckian_locus_kwargs={"color": "k", "linestyle": "--", "linewidth": 1.2}
)
# 可选:添加光源点(如标准照明体A、D65)
colour.plotting.plot_planckian_locus_in_chromaticity_diagram_CIE1931(
["A", "D65"],
axes=ax,
show=False,
plot_kwargs={"marker": "o", "markersize": 8, "color": "red"}
)
# 最终统一显示
plt.show()⚠️ 关键注意事项:
- plot_planckian_locus_in_chromaticity_diagram_CIE1931 是高层封装函数,不支持 axes= 参数;应改用底层函数 colour.plotting.temperature.plot_planckian_locus(axes=...) 实现轴复用;
- 所有后续绘图函数必须显式传入 axes=ax,且 show=False(除最后 plt.show() 外);
- 若需自定义样式(颜色、线型、标记),优先使用各函数的 *kwargs 参数(如 plot_kwargs, planckian_locus_kwargs),避免手动操作ax对象破坏Colour内置布局逻辑;
- 建议始终导入 matplotlib.pyplot as plt 并显式调用 plt.show(),确保跨环境兼容性。
通过该方法,您可灵活组合色域、光源点、等温线、色差椭圆等多种色彩图元,构建专业级色度分析图表,大幅提升色彩研究与工程验证的表达力与准确性。










