2011-10-21 2 views
0

Ext JS 4 꺾은 선형 차트 구성 요소를 쓰고 있습니다. 그것은 모두 잘 작동하지만 축 아래에 레이블을 표시 할 때 레이블이 너무 빽빽합니다. 나는 눈에 띄는 레이블의 수가 줄어들지 않을 것입니다. 그렇게하는 방법?Ext JS 4 차트에서 표시되는 레이블 수를 줄입니다.

{ 
    type: 'Category', 
    position: 'bottom', 
    fields: ['date'], 
    grid: true, 
    label: { 
     field: 'label', 
     rotate: { degrees:315 }, 
     renderer: function(item) { 
      var date = new Date(item); 
      /* parseIntToStringWithZeros is a custom method somewhere else */ 
      var day = parseIntToStringWithZeros(date.getDate()); 
      var month = parseIntToStringWithZeros(date.getMonth()); 
      result = day + '-' + month; 
      return result; 
     } 
    } 
} 
+1

ExtJS 차트 시스템을 사용하지 않는 것이 좋습니다. 아직 성숙하지는 않았습니다. [highcharts] (http://www.highcharts.com)를 사용해보세요. 비공식적 인 용도로 무료 인 opensource proj입니다. 그것을 채택하고 하이 차트를 기반으로 맞춤 구성 요소를 만들면 모든 차트 시스템이 문제없이 ExtJS에있게됩니다. –

답변

1

내가 대신 시작 (데이터가 어떻게 생겼는지 모르겠 축 "분류"의 축 "숫자"를 사용해야 할 수도 있습니다 생각하지만, 당신이해야 할 수도 있습니다 : 여기에 축에 대한 내 코드는 시간을 값으로 변환하여 작동 시키십시오).

숫자 축을 사용하면 축 설정에서 steps 속성을 설정하여 주 눈금 값 (눈금 선과 레이블이 나타나는 위치)의 수를 설정할 수 있습니다. 그러나 이것이 항상 작동하지는 않습니다. 보다 확실한 방법은 문서화되어 있지 않은 applyData 기능을 덮어 쓰는 것입니다. 그래서 당신이하고있는 것을보기 위해 dev 코드를 검색해야합니다.

또한 단순히 특정 레이블을 렌더링하지 않으려면 레이블 렌더러 함수에서 빈 문자열을 반환하면됩니다. 예 : 위의 코드에서 개인의 "월"만 표시하려면 다음과 같이하십시오.

label: { 
    .... 
    renderer: (function(){ 
     var lastRenderedMonth = ''; 
     return function(item){ 
      ... //your code above without the return.. 
      if(month == lastRenderedMonth) 
       return ""; 
      lastRenderedMonth = month; 
      return result; 
     }; 
    })(), 
    ... 
+0

아이디어를 제공해 주셔서 감사합니다. Unfortunetly "개월"내 경우에는 모두 별개이며 그들의 수백이 있습니다. 또한 내장 함수 오버라이드 개념이 마음에 들지 않습니다. 또한 Lionel Chan이 제공하는 HighCharts로 전환했습니다. ExtJS 차트 시스템은 정말 짜증납니다. – freakish

+2

행운을 빈다. 그건 그렇고 - 고유 한 월이 수백 개있는 경우 모두 한 번에 화면에 있어야한다는 의미는 아닙니다. 1 년에 하나의 라벨 만 렌더링 할 수 있도록 만드는 것도 쉬운 일입니다. 나는 최근 유용하게 쓸 수있는 Ext Charts의 스타일링에 대한 블로그 게시물을 작성했습니다. http://www.scottlogic.co.uk/2011/12/ext-js-4-stock-charts/ –