There is no pigment in a soap bubble. The colours come from light bouncing off the outside of the film and off the inside, and interfering with itself on the way out. Where the two waves agree, that colour is doubled; where they cancel, it is missing. Change the thickness of the film and the colour changes — which is why the top of a bubble is a different colour from the bottom.
A soap film is not a slab of uniform thickness. Gravity pulls the liquid down, so the film is thin at the top — where it has drained away and is about a tenth of a wavelength — and thick at the bottom, where it is several wavelengths. The two regions reflect different wavelengths, so the top of a bubble and the bottom of the same bubble are different colours.
Watch a bubble and the bands drift downwards, because the thick band is always chasing the thin one as the film drains. What you see is a colour gradient travelling down the surface of a sphere.
Light reflected off the top of the film has bounced off a boundary going from less dense to more dense, and picked up a half-wavelength shift. Light reflected off the bottom has bounced off a denser-to-less-dense boundary and picked up none. So the two rays start out half a wavelength out of step, and the condition for them to reinforce is that the extra distance travelled through the film — twice the thickness — should be a whole number of wavelengths.
Set the thickness to two hundred nanometres and the film is a mirror for green; set it to three hundred and it is a mirror for violet and red at once, and the bubble looks yellow. The colours are arithmetic, not decoration.