As light passes through thin layers of oil on the surface of water the various colors separate and we see a rainbow or the colors of the rainbow.
The colors are caused by interference between light reflected from the top and bottom of the oil film.
I just thought it looked cool when I took this picture, but for those who want more explanation here are some links:
Why do rainbow-like colors appear on the surface of oil?
Why does petrol and oil make a rainbow effect on water ?
Last updated: January 24, 2014