Ok so after some thought and some playing around, I solved the problem. The issue I was having is in fact with the ColorMapValues and ColorMapColors. If I passed in an array of 3D data that had depth in the z axis, the color scale adjusted so that the darkest color corresponded to the minimum value, and the lightest colour corresponded to the maximum value. If the array had no depth (z axis values
were all identical) then that value was assigned to the middle color, regardless of the ColorMapValues. Once I realized this, it was not difficult to solve. I changed my dynamic legend so that instead of going from 0 to the maximum z axis value passed it, it ranged from the
minimum value to the maximum value. I had to introduce a case structure in the even that all the z values are the same (because then there would be no range, and this would create an error in the ColorMapValues node). If all the z axis values were the same, I simply centered the legend of them, and arbitrarily incremented and decremented by 1 in both directions. This way, although the displayed image didnt change, my legend now shows the correct values. I have attached my fixed vi for reference of anyone who experiences the same problem (or a similar one). In the vi, the input (and output) cluster has values that are not used by this vi, this is because this vi is part of a much larger program. You may find that the contour map does not update on the front panel. but if you use this vi as a subvi, and wire a 3d surface to it, that surface will update.
Jeff
Using Labview 7 Express