调用LuxPy包plot_cri_graphics函数无绘图弹出的问题咨询
问题原因
LuxPy的所有绘图功能都是基于Matplotlib实现的,但它的绘图函数默认只负责把线条、色块、标注这些图形元素画到Matplotlib画布上,既不会主动触发窗口弹出,也不会阻塞进程等你看图,所以普通Python脚本跑完直接退出的时候,自然看不到任何弹窗,也不会抛出报错。
函数返回的data是存储所有显色性计算结果的字典,是给你后续自定义计算指标、调整图表细节用的,不是绘图必需的输入,不需要额外传给其他绘图函数。
解决方法
只需要在原有代码的末尾,调用Matplotlib的plt.show()方法就能正常弹出绘图窗口,修正后的可运行代码如下:
import luxpy as lx import matplotlib.pyplot as plt SPD = lx._CIE_ILLUMINANTS['F4'] data, _, _ = lx.cri.plot_cri_graphics(SPD) # 触发Matplotlib窗口渲染显示 plt.show()
补充说明
- 你测试到的其他类自带的
.plot()成员函数无法弹窗,都是同一个原因,所有LuxPy的绘图方法执行完后,统一调用plt.show()即可正常显示 - 如果是在Jupyter Notebook环境运行,可以在代码开头加上
%matplotlib inline魔法命令,图形会直接内嵌在单元格输出区域,不需要弹出独立窗口 - 如果不需要弹窗、只想把结果存成本地文件,可以在
plt.show()之前加一行保存代码:
即可将生成的类TM30显色性可视化结果高清保存到本地。plt.savefig('tm30_cri_result.png', dpi=300, bbox_inches='tight')
官方教程里的示例默认是在IPython这类带Matplotlib自动渲染的交互环境下运行的,这类环境会自动把画布内容显示出来,所以示例里没写
plt.show(),直接跑普通.py脚本就会出现无弹窗、无报错、无输出的问题。
内容的提问来源于stack exchange,提问作者Sim Son
相关产品推荐
相关产品推荐

