Personally I’ve just used template columns, which would be easier in this case. Take the url above, replace any dynamic data with template replacement values, such a {{labels}}, {{dates}}, {{colors}}, etc. Then you can usually feed other templates, joined lists, etc into that template column.
I’m sure you could probably do the same with the JSON columns, but I feel there are too many intricacies in the JSON data structure, meaning it’s probably just as easy to use a template column. I haven’t done anything real extravagant, but this is a simple chart that I have in one of my apps. In my case I feed the template with a few joined list columns. Mine is simple, but your joined lists might require joining values from another template column to get the formatting right, especially for the gantt dates.