2012-06-11 2 views
5

동일한 차트에 두 개의 데이터 시리즈를 표시하려고합니다. 첫 번째 시리즈 (즉, 인용문 수)는 양의 정수 (0) 만 포함 할 수 있습니다. 두 번째 시리즈 (예 : 판매액)에는 양수 및 음수 float 값이 포함될 수 있습니다 (궁금한 점이 있다면 음수 값은 신용 노트 발행으로 인해 발생합니다).하이 차트 - 여러 축을 표시 할 때 음수 값 문제

첨부 된 이미지에서 알 수 있듯이 두 번째 시리즈에 음수 값이 포함되어 있으면 두 개의 데이터 시리즈 중 0 점 "기준선"이 더 이상 공유되지 않습니다. 우리는 Y의 "분"옵션을 설정하려고했습니다

a busy cat

은 0 축,하지만 우리는 음의 값에 대한 통찰력을 잃게됩니다.

또한 첫 번째 시리즈의 최소값을 두 번째 시리즈의 최소 극한과 동일하게 설정하려고 시도했지만 불행히도이 방법은 열의 크기를 매우 정교하게 조정하지 않습니다 (각 Y 축 값이 완전히 설정되어 있기 때문에). 다른 가늠자, ie : 10s 대 1000s).

0 포인트 "기준선"이 공유되도록 차트를 구성하려면 어떻게해야합니까? 즉, 푸른 색 기둥을 초록색 0 점과 같은 기본 선에서 어떻게 시작하게할까요?

업데이트

링거의 대답은 올바른 방향으로의 한 단계입니다. 두 축 모두에 mintickinterval을 설정하면 트릭을 수행합니다. 그러나 변수 데이터를 기반으로 동적으로 값을 결정해야합니다.

차트를 생성하기 전에 mintickinterval 값을 결정하는 방법에 대한 팁은 무엇입니까?

나는 그것에 대해 생각 해왔다. 왼쪽 축과 관련된 값 (파란색/따옴표)은 항상 양수이며 0부터 시작합니다. 따라서 영점 아래에 표시 할 틱의 수를 지시하는 것이 올바른 축 (녹색/판매)입니다.

var factor = right_axis.min/right_axis.tickinterval; 

left_axis.min = factor * left.tickinterval; 

참고 : highcharts가 자동으로 파란색과 녹색 모두를위한 최선의 규모를 결정 지금부터 내가해야 할 필요가 있으므로 (의사 코드를 변명)처럼 왼쪽 축 '최소 값을 설정하는 방법을 찾을 수 있습니다 : 참조 API가 Axis에서 setExtremes() 메서드를 사용하는 것을 보았습니다. 그러나 먼저 차트를 초기화 한 다음 돌아가서 왼쪽 축을 업데이트해야합니다. 차트를 그리기 전에이 작업을 수행하고 싶습니다. 아마 나는 명백한 것을 간과 할 것입니까?

감사합니다.

답변

3

jsfiddle 실물 크기로 표시 한 것처럼 yaxis에서 tickIntervalmin의 조합으로 사용자가 원하는 것을 제어 할 수 있습니다. 코드에서

편집

당신이 판매 측에 가장 낮은 값이 무엇인지 추적하고 또한 가장 높은 값을 유지해야합니다 XML에서 읽는 동안. 그런 다음 특정 값을 충족하는 경우 해당 값을 표시하려는 f}을 결정하십시오. 그 후 if 문을 사용하여 값을 설정하십시오. 다음은 몇 가지 예입니다.

Example

Low less than -50 and greater -90 
With High greater than 400 
Primary Axis: min: -1, tickInterval: 1, 
Secondary Axis: min: min: -100, tickInterval: 100, 

Example

Low less than -50 and greater -90 
With High less than 400 
Primary Axis: min: -2, tickInterval: 1, 
Secondary Axis: min: -100, tickInterval: 50 

은 기본 축에있는 분은 당신이 단순히 tickInterval에 의해 보조 축에있는 분을 분할해야 알아낼합니다. 그러면 기본 축의 tickInterval은 항상 1이됩니다.

+0

내 차트를 동적으로 생성해야합니다. 프로그래밍 방식으로 min 및 tickinterval에 대한 적절한 값을 어떻게 결정합니까? 이 추가 된 통찰력을 반영하여 질문을 업데이트했습니다. 도와 주셔서 감사합니다. –

+0

제안 사항에 대한 내 답변을 수정하십시오. – Linger

+0

감사합니다. –