Возможно ли это для эластичной левой оси и определенного домена правой оси?

#d3.js #dc.js

#d3.js #dc.js

Вопрос:

В настоящее время у меня есть составной линейный график, в котором линии пересекаются в большинстве областей. По этой причине я начал искать способ изменить правый домен.

 .rightY(d3.scaleLinear().domain([0,1]))
 

Правая ось — это процент, она не должна превышать 1 и, похоже, работает, если я не установил эластичность (true). Есть ли способ сделать левую ось эластичной, а правую — фиксированной?

Ответ №1:

Вы правы, что в настоящее время одна и та же настройка эластичности используется как для левой, так и для правой осей.

Однако elasticY его действительно легко реализовать вручную, поэтому вы можете оставить его выключенным и вычислять левый домен всякий раз, когда диаграмма отображается или перерисовывается:

     moveChart.on('preRender preRedraw', chart => {
      const ranges = chart._calculateYAxisRanges(true, false);
      chart.y(d3.scaleLinear().domain([ranges.lyAxisMin, ranges.lyAxisMax]));
    })
 

Я понял это, посмотрев на источник для составной диаграммы, в частности _prepareLeftYAxis() и _prepareYAxis() .

Демонстрационная скрипка.

Комментарии:

1. Опять же, Гордон, ты решил еще одну из моих проблем. Большое спасибо!