This is an advanced smoke shader packed into two types of groups, reflective and non reflective, the reflective group scatters light from the colour of the smoke onto the enviroment, the non reflective only shows the colour of the smoke and doesn't affect the enviroment around it. Simply copy the node as many times as you need to add different colours, connect the density attirbute to the Density Fac Input, set the colours, and connect them all via add nodes to the volume and you're all set. Adjust the sliders to achieve different results, but remember negative values will produce a volume absorbtion effect.
As you can see in one of the pictures here, the green colour is not reflected on the ground plane whereas the blue colour is. Most likely the non reflective node will be most useful, but I added the reflective node in case it comes in useful. Enjoy!