2017-03-06 13 views
0

質問はthis oneに関連しています。両方のシリーズのダイナミックスケールによるハイチャート

問題:現在、2つのシリーズのチャートがあります.1つは正のセリ、もう1つは負の値です。デフォルトでは、各セリは動的スケーリングを持っていますが、関連していません(つまり、最初のセリは20、MAXは2番目のセリが5であれば同じようにグラフになります)。 yAxisに最大値と最小値を設定すると、問題は解決しますが、空のスペースが増えます。その場合、列が小さすぎることがあります。ダイナミックなスケーリングを持つようにチャートの設定を更新することはできますが、両方のシリーズにスケッチを設定することはできますか?ここ

)はyAxishttp://jsfiddle.net/futw5e8k/6/

Highcharts.chart('container', { 

chart: { 
    type: 'column' 
}, 

title: { 
    text: null 
}, 

xAxis: { 
    categories: ['13-17', '18-24', '25-34', '35-44', '45-54', '55-64', '65+'], 
    offset: -150, 
    lineWidth: 0, 
    tickWidth: 0 
}, 

yAxis: [{ 
    title: { 
     text: null, 
    }, 

    top: 50, 
    height: 124, 
    min: 0, 
    max: 100, 
    gridLineColor: 'transparent', 
    gridLineWidth: 0, 
     minorGridLineWidth: 0, 
    labels: { 
     enabled: false 
    } 
},{ 
     title: { 
     text: null 
    }, 
    top: 200, 
    height: 150, 
    offset: 0, 
    min: -100, 
    max: 0, 
    gridLineColor: 'transparent', 
    gridLineWidth: 0, 
     minorGridLineWidth: 0, 
    labels: { 
     enabled: false 
    } 
}], 

plotOptions: { 
     column: { 
      dataLabels: { 
       enabled: true, 
       crop: false, 
       overflow: 'none', 
       formatter: function() { 
         return Math.abs(this.y); 
         } 
      } 
     } 
    }, 
    tooltip: { 
    formatter: function() { 
     return this.x + '<br/>' + this.series.name + ': ' + Math.abs(this.y); 
    } 
}, 
series: [{ 
    name: 'John', 
    data: [1, 13, 20, 19, 15, 7, 2] 
}, { 
    name: 'Joe', 
    yAxis: 1, 
    data: [-0.35, -6, -9, -16, -3, -1.5, -0.25] 
}] 

}のsetted MAXMIN値を持つ私の例です。

答えて

1

ロードイベントでは、データの最大値を見つけることができ、軸の最大値を動的に更新できます。Axis.update()を参照してください。

chart: { 
type: 'column', 
events: { 
    load: function() { 
    const max = Math.max(this.series[0].dataMax, this.series[1].dataMax); 

    this.yAxis[0].update({ 
     max: max, 
    }, false); 

    this.yAxis[1].update({ 
     max: max, 
     top: 130 
    }, false); 

    this.redraw(false); 
    } 
} 
}, 

例:http://jsfiddle.net/futw5e8k/7/

+0

負のy軸について、 ''むしろmax'よりmin'を指定する必要があります。また、@ demoでは、軸 'height'sが同じであることを確認する必要があります。または、極端な一致が目標を達成しないようにする必要があります。更新されたfiddle:http://jsfiddle.net/futw5e8k/10/ – jlbriggs

+0

1つのコメント - 私の場合正しいmaxは 'const max = Math.max(this.series [0] .dataMax、this.series [1] .dataMin)); ' – demo