just calculating the coordinate position of a bullet for the first shot 1000 or so times... first array with coordinates - color green
then for the second shot 1000 or so times... second array with coordinates
and so on

and then doing a scatter plot of the coordinates on top of each other with the appropriate color assigned.

ofc it is automated to make one run for all weapon stats, but basically that's it.

The difficult thing i think is to define the distance at which you want to see the spread, coz you need to cut the cone.
And I dont know how to implement something like a "Zoom" or "Distance" Slider, which would be neat-o

Symthic plots are indeed drawn with Python by drawing pixels with PIL. Each plot consists of N amount of bursts of five shot with the weapon at full-auto/as-fast-as-possible, color of the pixel representing which shot in burst was in question (first shot = green, last shot = red). Recoil and spread are calculated as shown on the site under general info.

Links to users' thread list who have made analytical/statistical/mathematical/cool posts on Symthic:

3VerstsNorth - Analysis of game mechanics in BF4 (tickrates, effects of tickrate, etc)