This might be a little processing intensive but you could do it with cellular automaton. There's an interesting article at http://www.jgallant.com/2d-liquid-simulator-with-cellular-automaton-in-unity/ where they simulate water, including things like pressure and gravity. I've been meaning to try it out in construct for awhile. If you ignored the gravity sections (or limited it somehow) it would give you a gas simulation. This is how the old "falling sand" games worked.
I imagine this could be done by with 2 2D arrays ( or a 3D array with a depth of 2 ). You read from one array, apply the rules then write to the second. You can then apply that to a tilemap. On the next simulation tick you swap the 2 arrays over. The swapping trick is so that you don't modify the data you are reading from.
Another method is that you could have a number of "gas" sprites that are both attracted and repelled by each other ( based on distance ). The attraction will hold them loosely together, but the repulsion will cause the gas to expand. I haven't read into this too much but there is a method here https://peeke.nl/simulating-blobs-of-fluid