Учитывая пример, который вы связали, единственное, что вам нужно, это установить локальную переменную для каждого SVG:
axis.set(this, d3.axisRight(ty).ticks(3));
Здесь я использую ticks(3)
, потому что у нас не так уж многотам вертикальное пространство, а ty
- это масштаб, созданный для каждого SVG.Затем вы позже используете эту локальную переменную как:
svg.each(function(){
axis.get(this)(d3.select(this)
.append("g")
.attr("transform", "translate(" + width + ",0)"));
});
Вот обновленные bl.ocks: https://bl.ocks.org/GerardoFurtado/7ce71db8470c75940feed0d64b3f1f25/fb38b0867f434268e254f08e469cf38113179472
PS: обратите внимание на тот факт, что здесь я 'м, используя ...
axisGenerator(groupSelection)
... вместо способа более традиционного шаблона ...
groupSelection.call(axisGenerator)
... потому что мы не можем получить this
с традиционнымшаблон.Для использования традиционной скороговорки без метода each
вам понадобится странная вспомогательная функция, например:
svg.append("g")
.attr("transform", "translate(" + width + ",0)")
.call(generateAxis);
function generateAxis(selection) {
selection.call(axis.get(selection.node()));
};