How to disable some streams by default in a nvd3 Simple Line Chart?

前端 未结 4 830
-上瘾入骨i
-上瘾入骨i 2020-12-30 01:47

I have several lines and I know that clicking on the \"dot\" in the legend will hide/show it.

However, I need to start with some of the lines being disabled and not

相关标签:
4条回答
  • 2020-12-30 02:09

    After reading this answer I still had to do some more reading in order for me to understand how to set a stream disabled from my JSON data-stream for the graphs.

    The example below is what solved it for me disabled: true

        {
        key: "something",
        disabled: true,
        values: [...]
        }
    
    0 讨论(0)
  • 2020-12-30 02:20

    You could start out with a hidden chart and try something like this:

    // Array of series you want to hide
    var hidden = [0, 2];
    
    // Dispatch click event to each element
    var e = document.createEvent('UIEvents');
    e.initUIEvent('click', true, true);
    d3.select('.nv-legend')
      .selectAll('.nv-series')
      .filter(function(d, i){return hidden.indexOf(i) !== -1;})
      .node()
      .dispatchEvent(e);
    

    Once this finishes, unhide your chart and the series will be disabled.

    0 讨论(0)
  • 2020-12-30 02:22

    You can change which streams are enabled/disabled by using the chart.state() object. For example:

    // Assuming your chart is called 'chart'
    var state = chart.state();
    
    for(var i=0; i < state.disabled.length; i++) {
      state.disabled[i] = ...LOGIC RETURNING TRUE OR FALSE...;
    }
    
    chart.dispatch.changeState(state);
    chart.update();
    
    0 讨论(0)
  • 2020-12-30 02:30

    For each of your data series that you want disabled, just do:

    series.disabled=true
    

    nvd3 does not do everything, but if you are willing to peruse the code it is actually quite flexible. I discovered this by finding this line in the source of several of the chart models:

    state.disabled = data.map(function(d) { return !!d.disabled });
    
    0 讨论(0)
提交回复
热议问题