How do I get a color ramp in ArcGIS to show from -X to 0 to X, as Red to White to Green?
Whenever I try, ArcGIS scales the colors from min to max, without regard to 0. White ends up representing a positive or negative value.
I want the full red to represent the negative of the full green even if I don't have symmetric values in my data! This is important if I do not wish to lie about the data. If I show full green for -5000 but full red for +25000 the scales are misleading and intermediate values cannot be accurately interpreted.
I think the only way to do this easily is using a classified renderer and a custom colour ramp as PolyGeo said. This would be limited to 32 values as that's the maximum classes you can have. Use a red to green colour ramp and then double click on the patch for 0 and change it to white.
If this solution is not working well for you try extracting to 3 rasters using Extract by Attributes:
Less than 0 Equal to 0 More than 0
Display your data with a stretched renderer: less than with a red to white colour ramp, more than 0 with white to green and then Equal to 0 as white. If you are using min-max stretch you can edit the values to make them symmetric if that is required - the values need not exist if you are entering them manually.
The process for creating a Multipart color ramp is described in an Esri blog called Create a custom color ramp:
Did you ever think that the color ramps available in ArcMap were limited? Well, you can create your own color ramp! This blog gives instruction on how to create one [including Multipart] using ArcGIS 10.