javascript - Optimise Tick Positions To Minimise Wasted Space At Top Of Chart -


if run snippet below, notice in first chart, there lot of space wasted @ top of chart. same chart @ different element height makes better use of space.

how can highcharts optimise tickpositions reduce wasted space?

i've tried tweak following highcharts properties:

  • ceiling
  • floor
  • min
  • max

to no avail.

as sidenote, issue started affecting on upgrading v3 v4 (latest)

var model1 = {    "chart": {},    "xaxis": {      "categories": ["2033", "2034", "2035", "2036", "2037", "2038", "2039", "2040", "2041", "2042", "2043", "2044", "2045", "2046", "2047"]    },    "yaxis": [{}, {      "opposite": true,    }],    "series": [{      "data": [0, 0, 0, 0.210042, 0.310498, 0.328766, 0.328766, 0.328766, 0.328766, 0.328766, 0.328766, 0.328766, 0.328766, 0.305934, 0],      "yaxis": 0    }, {      "data": [0, 0, 0, 9.652964, 13.575342, 14.328766, 14.328766, 14.328766, 14.328766, 14.328766, 14.328766, 14.328766, 14.123286, 12.757988, 0],      "yaxis": 1    }],  };      $(function() {    $('#container1').highcharts(model1);    $('#container2').highcharts(model1);  });    //function increaseheight(){  //$('#container1').height(400);  //console.log("now resize window see chart change");  //}
#container1 {    height: 300px;  }  #container2 {    height: 400px;  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>  <script src="https://code.highcharts.com/highcharts.js"></script>    <!-- button onclick="increaseheight()">resize chart 1</button -->  <div id="container1"></div>  <div id="container2"></div>

the reason you're having such trouble particular chart due how highcharts handles dual axes. can tricky work with, , attributes work, such ceiling, min, max, etc. don't work single axis charts.

i posted answer few weeks similar situation , applied few of ideas code snippet (see below).

var model1 = {    "chart": {},    "xaxis": {      "categories": ["2033", "2034", "2035", "2036", "2037", "2038", "2039", "2040", "2041", "2042", "2043", "2044", "2045", "2046", "2047"]    },    "yaxis": [{      "startontick": false,       "endontick": false,       "maxpadding": 0,       "minpadding": 0    }, {      "opposite": true,      "startontick": false,       "endontick": false,       "maxpadding": 0,       "minpadding": 0    }],    "series": [{      "data": [0, 0, 0, 0.210042, 0.310498, 0.328766, 0.328766, 0.328766, 0.328766, 0.328766, 0.328766, 0.328766, 0.328766, 0.305934, 0],      "yaxis": 0    }, {      "data": [0, 0, 0, 9.652964, 13.575342, 14.328766, 14.328766, 14.328766, 14.328766, 14.328766, 14.328766, 14.328766, 14.123286, 12.757988, 0],      "yaxis": 1    }],  };      $(function() {    $('#container1').highcharts(model1);    $('#container2').highcharts(model1);  });    //function increaseheight(){  //$('#container1').height(400);  //console.log("now resize window see chart change");  //}
#container1 {    height: 300px;  }  #container2 {    height: 400px;  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>  <script src="https://code.highcharts.com/highcharts.js"></script>    <!-- button onclick="increaseheight()">resize chart 1</button -->  <div id="container1"></div>  <div id="container2"></div>

as can see, "wasted space" reported gone. note, however, relative position of both series differ between different container heights. due how highcharts calculating intervals on each individual axis , plotting them against 1 another.

in other answer, suggested alignticks: false chart attribute, gets bit messy example. also, setting explicit tickinterval first (lighter-colored) series results in same odd offset of gridlines.

so long don't have objection disparity between series positions, should useful you.


Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -