d3.js & nvd3.js — How to set y-axis range

后端 未结 6 1518
闹比i
闹比i 2020-12-05 04:00

I\'m trying to set the y-axis range of the chart from 1-100.

Consulted the API documentation and found a possible solution with axis.tickValues as seen here https://

相关标签:
6条回答
  • 2020-12-05 04:24

    I had a similar issue and resolved it by explicitly defining the domain in the yScale of the yAxis, i.e.

    var yscale = d3.scale.linear()
                         .domain([0,100])
                         .range([250, 0]);
    var yAxis = d3.svg.axis()
                      .scale(yscale);
    
    0 讨论(0)
  • 2020-12-05 04:26

    As the name should suggest, this adds the values in the array to your y domain, it does not set the y domain to [0,100]. So if you set this to [0,100] and your data's domain is -10 to 110, the domain will be [-10,110].

    Now if you wanted the domain to be [0,100] even if your data is larger you can use chart.yDomain([0,100]) ... BUT usually you want your domain to include or your data, so I highly recommend using chart.forceY instead of chart.yDomain. As you'll see, one of the most common uses for forceY is forceY([0]) to make 0 always in the domain.

    Hope that helps you understand what the function is actually doing, and arboc7, this should explain why it doesn't work in making the range smaller than the data set's.

    0 讨论(0)
  • 2020-12-05 04:28

    For stacked area charts, .forceY([0,100]) does not work. Use instead .yDomain([0,100])

    0 讨论(0)
  • 2020-12-05 04:28

    If you mean setting the y-domain (the range of numbers that should be displayed) for stacked area charts, this works for me:

    nv.models.stackedAreaChart()
      .x(function(d) {...})
      .y(function(d) {...})
      .yDomain([0, maxY])
    ...
    
    0 讨论(0)
  • 2020-12-05 04:36

    I have tried like:

    chart.forceY([DataMin, DataMax]);
    

    Datamin and Datamax need to calcuate from array. Also inorder to adjust axis points dynamically when filter applies need to custom handle click events of filter like:

    $('g.nv-series').click(function() {
       //Calculate DataMin, DataMax from the data array                    
       chart.forceY([DataMin, DataMax]);                        
    });
    

    So graph will adjust each time filter applies.

    0 讨论(0)
  • 2020-12-05 04:42

    Found a solution.

    Appending .forceY([0,100]) to the instantiation of the chart forces the axis to take on the range specified in the array.

    From the example here http://nvd3.org/livecode/#codemirrorNav

    Appending .forceY([0,100]) to the chart variable works.

    0 讨论(0)
提交回复
热议问题