When you pcolor(X,Y,I) then the I data will be used to decide which color information is used. By default, the numerically lowest value in I will be mapped to the first color in the color table, and the numerically largest value in I will be mapped to the last color in the color table, and all other values will be mapped according to the (value minus lowest) relative to (highest minus lowest) .
If you want the color to be based on some other information, then you should pass that other information instead of I
You currently have two independent variables (X, Y) and one dependent variable I . It looks like you intend to extend that to additional wavelengths, in which case you would have three independent variables (X, Y, wavelength) and one dependent variable. That requires a 4D plot, which are difficult to do. You could use volumeViewer with transparency to try to convey the information, but that probably will not work well. So you should consider either using slice() or using isosurface()