2011-10-21 11 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関数をオーバーライドすることです。そのため、開発者コードを検索して、何をしているのかを確認する必要があります。

また、特定のラベルをレンダリングしない場合は、ラベルレンダラー関数で空の文字列を返すこともできます。例えばあなたが唯一の個々の「月」は上記のコードでは、一度に表示したい場合は、このような何かを行うことができます。..

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

あなたのアイデアをありがとう。私のケースでは不幸にも「月」はすべて異なっており、数百もあります。また、私は組み込み関数のオーバーライドの概念が嫌いです。また、私はHighChartsに切り替えました.Lionel Chanが納得したように - ExtJSチャートシステムは本当に面倒です。 – freakish

+2

幸いです。ちなみに、あなたが何百ものユニークな月を持っていれば、それらは一度に画面上にある必要があるわけではありません。 1年に1つのラベルしか表示しないようにするのも簡単です。私は最近、便利なかもしれないExt Chartsのスタイリングに関するブログ記事を書いてきました。http://www.scottlogic.co.uk/2011/12/ext-js-4-stock-charts/ –

関連する問題