D3.js nvd3-多柱状图:如何记录y轴比例

D3.js nvd3-多柱状图:如何记录y轴比例,d3.js,nvd3.js,D3.js,Nvd3.js,根据需要,可以在多条形图上设置yScale,因为yScale应该是继承的方法 我想把它按对数比例缩放。我在使用lineChart.yScale(d3.scale.log())时得到了这个结果,但是对于multiBarChart,调用multiBarChart.yScale(d3.scale.log()),结果是yScale不是一个函数 有没有其他方法记录多柱状图的y轴 谢谢我用以下方法解决了这个问题,它由shouldLogScalevar控制: nv.addGraph(() => {

根据需要,可以在多条形图上设置yScale,因为yScale应该是继承的方法

我想把它按对数比例缩放。我在使用
lineChart.yScale(d3.scale.log())
时得到了这个结果,但是对于multiBarChart,调用
multiBarChart.yScale(d3.scale.log())
,结果是
yScale不是一个函数

有没有其他方法记录多柱状图的y轴


谢谢

我用以下方法解决了这个问题,它由
shouldLogScale
var控制:

nv.addGraph(() => {
  this.chart = nv.models.multiBarChart()
    ...
    .y(d => {
      const y = parseFloat(d.y);
      return this.shouldLogScale ? Math.log10(y <= 0 ? 1 : y) : y;
    });

  if(this.shouldLogScale) {
    this.logScale();
  } else {
    this.chart.yAxis.tickFormat(d3.format(`,.${this.precision}f`));
  }

  ...
});
也许我可以使用y域和范围值的映射来避免在
logScale
方法中使用log和pow函数

private logScale() {
  this.chart.forceY([1, 180]
    .map(v => Math.log10(v)));
  this.chart.yAxis.tickValues([1, 3, 5, 10, 20, 50, 100, 180]
    .map(v => Math.log10(v)));
  this.chart.yAxis.tickFormat(d => Math.pow(10, d).toFixed(this.precision));
}