2013-04-18 4 views

답변

11

짧은 대답은 할 수 없습니다.

축 스케일링, 패딩 및 틱 위치 등을 조정할 수 있으며 원하는 것을 얻을 수도 있지만이를 수행 할 설정이 없습니다.

기능 요청은 당신이 당신의 투표 및/또는 주석을 추가 할 수 있습니다,하지만이 :

http://highcharts.uservoice.com/forums/55896-general/suggestions/2554384-multiple-axis-alignment-control

편집 : OTOH,이 같은 이중 축 차트가 가장 자주 언급해야 데이터를 보여주는 매우 열악한 방법이며 사용자가 유효하지 않은 비교를하도록 유도합니다.

대부분의 사람들은 항상 하나의 차트에 모든 것을 넣으려고하지만 여러 차트가 더 좋은 해결책입니다.

FWIW

+0

이 항목에 3 개의 표를 추가하십시오. 버머! –

0

가장 간단한 방법은 각 축에 동일한 최소/최대를 제공하는 것이다. 플롯 호출 (배열 결합, 가장 가까운 int에 대한 최대/최소 라운드 반올림)을하기 전에 좋은 min/max를 데이터를 기반으로 결정하는 것은 매우 간단합니다.

pretend this is code so I can link to jsFiddle 

fiddle으로 업데이트되었습니다.

+2

동일한 단위의 데이터가 있다고 가정하면 좋은 해결책이 될 것입니다. 대부분의 경우, 여러 축을 사용하는 차트를 작성하는 경우, 이는 공정한 가정이 아닙니다 ... – jlbriggs

5

먼저 y 축에 대한 최소/최대 값을 설정하고 두 번째 축에로 연결이를 사용하지만, 난 당신이 효과를 기대하고 있는지 확실하지 않습니다 수 있습니다

http://jsfiddle.net/qkDXv/2/

yAxis: [{ // Primary yAxis 
      labels: { 
       format: '{value}°C', 
       style: { 
        color: '#89A54E' 
       } 
      }, 
      title: { 
       text: 'Temperature', 
       style: { 
        color: '#89A54E' 
       } 
      }, 
      min:-250, 
      max:50 
      //linkedTo:1 
     }, { // Secondary yAxis 
      title: { 
       text: 'Rainfall', 
       style: { 
        color: '#4572A7' 
       } 
      }, 
      labels: { 
       format: '{value} mm', 
       style: { 
        color: '#4572A7' 
       } 
      }, 
      opposite: true, 
      linkedTo:0 
     }], 
+1

어떤 이유로 든 결과를 복제 할 수 없습니다. linkedTo는 비례가되도록하고 한 시리즈의 큰 값은 나머지를 부숴지게 만듭니다. 나는 저울을 독립적으로 만들려고 노력하고 있습니다. 그러나 제로를 맞추십시오. 내 요구 사항이 심지어 실현 가능한지 확실하지 않습니다. –

+2

이 솔루션은 위에 제공된 다른 솔루션과 마찬가지로 동일한 축척의 시리즈에 의존하며, 이중 축 차트를 사용하는 경우에는 그렇지 않습니다. – jlbriggs

4

이 될 때까지 쉬운 해결 방법 기능이 추가 된 이유는 최대/최소 비율이 두 축 모두 동일하도록하는 것입니다. 예를 들어 기본 Y 축의 최소 및 최대 값이 -20 및 40 인 경우 최대/최소 비율은 -2입니다. 이제 2 차 y 축의 최대 값이 25라고 가정합니다.이 축의 최소값을 25/-2 (= -12.5)로 설정하면 y = 0 선이 두 축에 대해 정렬됩니다. 아래 같은 일부 것은 나를 위해 확인 일 :

자동 ;-)

편집 불구하고이를 설정하는 플래그를 가지고 훨씬 좋네요 수 있을까요

yAxis0Extremes = chart.yAxis[0].getExtremes(); 
yAxisMaxMinRatio = yAxis0Extremes.max/yAxis0Extremes.min; 
yAxis1Extremes = chart.yAxis[1].getExtremes(); 
yAxis1Min = (yAxis1Extremes.max/yAxisMaxMinRatio).toFixed(0); 
chart.yAxis[1].setExtremes(yAxis1Min, yAxis1Extremes.max); 
+0

나는 당신의 해결책을 좋아했습니다! 그래프를 정렬하는 데는 완벽하게 작동했습니다. 공유 주셔서 감사합니다 ... – Ohlin

+0

굉장, 고마워요! –

+1

거의 완벽한 답변입니다. 유일한 문제는 양수 값만 가정하는 것입니다. 나는 그것이 부정적인 축 민감한 하나를 만들기 위해 그것을 사용하려고하고 내가 관리하는 경우 그것을 공유합니다. – Zuks

0

당신은에 따라 그것을 쉽게 할 수있다 코드 -

아래는 대향 Y시킴으로써 행한다 지점이 만나는 첫번째 Y 축 제로를 찾아서 (이때 * -1)

조에 OPP의 Y 축의 최소값을 설정해야 내 경우는 [1] 주요 y 축을 형성하고 y 축 [0] 반대 y 축

}, function(chart) { // on complete 
     var factor = chart.yAxis[1].min/chart.yAxis[1].tickInterval 
     var tick = chart.yAxis[0].tickInterval; 
     var _min = chart.yAxis[0].tickInterval * factor 
     chart.yAxis[0].update({ min: _min }); 
     chart.yAxis[0].update({ tickInterval: tick }); 



    }); 
1

나는 그것이 이년이었다 알을 형성 y 축. 그러나 나는 이전의 답에서 주어진 존재하는 해결책에 비해 더 나은 해결책을 발견했다. 내 솔루션은 여전히 ​​yAxis에 대해 min, max를 설정하기 위해 setExtremes를 사용하지만 예외 처리는 show()hide() 플롯에 매우 우수합니다. 솔루션 : link
Github : link

관련 문제