If updating the older charts to the latest version isn't possible, there is still a way forward. You can opt to rename the global variable "d3" for each version you need to use. By performing a find and replace on each template to update the referenced variables accordingly, you can ensure they point to the specific versions required. Below is an example of how this could be achieved through code:
(function (w, d) {
"use strict";
var h = d.getElementsByTagName("head")[0],
s = d.createElement("script");
w.d3 = null;
s.src = "https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.3/d3.min.js";
s.onload = function () {
w.d3_3_5_3 = w.d3;
w.d3 = undefined;
s = d.createElement("script");
s.src = "https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.4/d3.min.js";
s.onload = function () {
w.d3_3_5_4 = w.d3;
w.d3 = undefined;
s = d.createElement("script");
s.src = "https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js";
s.onload = function () {
w.d3_3_5_5 = w.d3;
w.d3 = undefined;
};
h.appendChild(s);
};
h.appendChild(s);
};
h.appendChild(s);
}(window, document));
In the provided example, three different versions are loaded one after another, with each new instance of d3 being captured and assigned to its respective variable - d3_3_5_3, d3_3_5_4, and d3_3_5_5.