在此NVD3多条形图中更改数据集时,该如何缩放轴



我正在使用NVD3生成多杆/堆叠图表。这是一个活的小提琴。

我正在采用一系列原始数据,将其转换为NVD3兼容结构,并在"当前年"(2018年(和"全年"中维护阵列。顶部的按钮使您可以在全年和当年之间切换。

我对最终图表感到满意,但一个例外。如果执行以下步骤,则Y轴的缩放不起作用:

1。(加载图表/小提琴

2。(单击" Team 3"(橙色(标签,在最高传奇区域几次

3。

4。(现在单击顶部的"当前年"按钮(仅显示一年的数据(

5。(再次单击" Team 3"(Team 3'(Orange(标签,位于顶级传奇区域几次...当禁用" Team 3"时,Y轴完全无法扩展以减少最大数量。

单击当前年/所有年度按钮时,我正在运行以下内容,我认为该图表将迫使图表完全适应新的数据集,并根据数据和传说项目自动设置其Y轴界限切换:

data = convertedArray; // THE ALTERNATE ARRAY OF DATA
chart.forceY([uniqueDollarAmounts[0], // THE DISTINCT VALUES THAT GOVERN THE Y AXIS AMOUNTS (AND BOUNDS?)
uniqueDollarAmounts2[uniqueDollarAmounts.length-1]]);
d3.select('#NVD3Chart svg').datum(data).call(chart); 

我需要做什么才能使禁用"团队3"将最大Y轴的最大值降低到下一个最高团队拥有的392,710.1价值(团队7(?我还观察到,当您返回"全年"时,它不如最初(说到Y轴的缩放(...因此,当我枢转到第二个数据集时,我会破坏某些内容显然。

chart.forceY(..)的目的实际上与您想要的相反,它确保y轴将 not 缩放时显示显示。数据已过滤。.datum(data)的调用根据data处理轴和数据的变化。实际上,只需删除这两个实例,它将y轴缩放将起作用。

$('#sort').click(function() {
    if ($(this).val() == "All Years") {
      $(this).val("Current Year");
        data = convertedArray;
        //chart.forceY([uniqueDollarAmounts[0], uniqueDollarAmounts2[uniqueDollarAmounts.length-1]]);
        d3.select('#NVD3Chart svg').datum(data).call(chart);
        nv.utils.windowResize(chart.update);
        getLowerTeamData()
      }
      else {
        $(this).val("All Years");
          data = convertedArray2;
          //chart.forceY([uniqueDollarAmounts2[0], uniqueDollarAmounts2[uniqueDollarAmounts2.length-1]]);
          d3.select('#NVD3Chart svg').datum(data).call(chart);
          nv.utils.windowResize(chart.update);
          getLowerTeamData()
        }
});

关于您要提到的功能的注释:

我还观察到,当您返回"全年"时,它不起作用,因为它最初是

这是因为当图表首先加载时未使用chart.forceY时,因此Y轴将正确扩展。当您返回"所有年份"时,它适用(或试图应用(chart.forceY最初并非发生导致此问题。

这个问题实际上是由于chart.forceY(..)从您的终点似乎是错字中不适用于您的初始数据集。仔细查看第119行:

chart.forceY([uniqueDollarAmounts[0], uniqueDollarAmounts2[uniqueDollarAmounts.length-1]]);

uniqueDollarAmounts2应为uniqueDollarAmounts,因此uniqueDollarAmounts2[uniqueDollarAmounts.length-1]的值为undefined。这会导致.forceY无法按预期工作,这就是为什么当您过滤" Team3 "时,它似乎仍然可以扩展。

这是一个小提琴在初始图表和错字校正上显示chart.forceY。请注意,在任何情况下都过滤数据时,Y轴都不会更改。2018年数据的最小值是不同的,因此您会发现较低的值确实会从06,641.8变化。

这是一个小提琴,其中删除了chart.forceY的实例。请注意,Y轴现在适当地刻度。

最新更新