2

tickPositioner 属性を介して x 軸の値を渡しています。これらの値は互いに等間隔ではありません。私の要件は、これらの値が互いに等しくない場合でも、これらの値を互いに等間隔にすることです。Plsは以下の私のコードを参照してください:

var chart = new Highcharts.Chart({
chart: {
     renderTo: 'container'
 },
 credits: {
     enabled: false
 },
 title: {
     text: 'Duration vs Productive Hours'
 },
 xAxis: [{
     allowDecimals: false,
     title: {
         text: 'Hours'
     },
     labels: {
         rotation: -90,
         align: 'right',
         style: {
             fontSize: '10px'
         }
     },
     tickPositioner: function () {
         var pos;
         tickPositions = [];
         tickStart = 100000;
         for (pos = tickStart; pos <= 1000000000; pos *= 10) {
             tickPositions.push(pos);
         }
         return tickPositions;
     }
 }],
 exporting: {
     width: 1024,
     filename: 'Duration_vs_Productive_Hours',
     buttons: {
         exportButton: {
             menuItems: [{
                 text: 'Export to PNG image',
                 onclick: function () {
                     this.exportChart();
                 }
             }, {
                 text: 'Export to JPEG image',
                 onclick: function () {
                     this.exportChart({
                         type: 'image/jpeg'
                     });
                 }
             }, {
                 text: 'Export to PDF file',
                 onclick: function () {
                     this.exportChart({
                         type: 'application/pdf'
                     });
                 }
             },
             null]
         }
     }
 },
 yAxis: [{
     min: 0,
     tickInterval: 10,
     max: 60,
     labels: {
         formatter: function () {
             return this.value;
         },
         style: {}
     },
     showEmpty: true,
     alternateGridColor: '#f7f7f7',
     gridLineColor: '#e7e7e7',
     allowDecimals: false,
     title: {
         text: 'Duration (Months)',
         style: {}
     }
 }],
 tooltip: {
     crosshairs: true,
     formatter: function () {
         if (this.series.type == 'line') {
             return '' + this.x;
         } else {
             return '' + this.x + ': ' + this.y;
         }
     }
 },
 legend: {
     layout: 'horizontal',
     align: 'center',
     verticalAlign: 'bottom',
     backgroundColor: '#FFFFFF'
 },
 series: [{
     name: 'Other Projects',
     type: 'scatter',
     data: [
         [560000, 13],
         [185250, 11],
         [3625788, 23],
         [1648510, 21],
         [265000, 14],
         [13000000, 43],
         [28000000, 34],
         [1567000, 19],
         [1190000, 20],
         [21000000, 31],
         [7000000, 33],
         [3805200, 30],
         [17000000, 29],
         [1503267, 21],
         [11332332, 29],
         [1485067, 20],
         [5000000, 30],
         [5400000, 22],
         [13000000, 23],
         [3810000, 26],
         [810000, 18],
         [27528218, 26],
         [377319, 14],
         [840000, 22],
         [550000, 13],
         [2643142, 26],
         [412800, 13],
         [2500000, 22],
         [4510000, 19],
         [523116, 15],
         [17600000, 28],
         [2500000, 21],
         [21000000, 29],
         [3500000, 17],
         [620000, 15],
         [163000000, 46],
         [134000000, 41],
         [45000000, 39],
         [13677454, 31],
         [167000000, 52],
         [47000000, 33],
         [49000000, 38],
         [31000000, 38]
     ]
 }, {
     name: 'User Data',
     type: 'line',
     data: [
         [4050000, 0],
         [4050000, 60]
     ]
 }] });
4

1 に答える 1

0

軸を対数にしようとしているようです。設定してみる

xAxis:{
    type:"logarithmic"

を取り外します。ティックポジショナー。 http://api.highcharts.com/highcharts#xAxis.type

これを行うと、次のようになります: http://jsfiddle.net/TsaMA/ xAxis の目盛りが 1M、10M、100M で等間隔に配置されています。

tickInterval と tickPixelInterval の 2 つの xAxis 設定があります。 http://api.highcharts.com/highcharts#xAxis.tickInterval

設定した場合

tickInterval:1

1M、10M、および 100M が得られます。これは、あなたが望むものに最も近いものです。

tickPixelInterval は、チャートの幅がわかっている場合に便利です。チャートの幅が 1000px の場合、tickPixelInterval:250 を設定できます。

于 2013-03-28T06:39:40.410 に答える