2012-05-26 14 views
12

私は自分のサイトでハイチャートを実装していますが、プレゼンテーションの観点からは挑戦的です。ハイチャートはゼロの値のラベルを削除します

データは正常に読み込まれますが、シリーズでは値の一部がゼロになります。ゼロ以外のときにラベルを表示したいのですが、そうでなければ読みにくくなります。

plotOptions: { 
    column: { 
    stacking: 'normal', 
    dataLabels: { 
      enabled: this.value == 0 ? false : true, 
     color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white' } 
} 
} 

をしかし、これは動作しません。

私はこのような何かをしようとしています。私は値の代わりに「this」だけを使ってみましたが、それを拾いません。 カスタムコードを作成せずにこれを行うことができるデフォルトオプションをライブラリから見つけることができませんでした。

私はいくつかのアプローチをチェックしましたが、ゼロはシリーズの1つに含まれています。だから私はまだグループのゼロではない値のラベルを提示したい。

私は、任意の提案

...それは、個々のシリーズグループ全体の値をとり、そしてないthis.y 1が言うときだと思いますか?明らかに私は何か間違っているよ!

答えて

52

dataLabelsformatterオプションを使用してみましたか?その中でデータにアクセスし、ラベルの外観を決めることができます。ここではゼロをチェックして、ちょうどnullを返すことができます。

dataLabels: { 
    enabled: true, 
    color: colors[0], 
    style: { 
     fontWeight: 'bold' 
    }, 
    formatter: function() { 
     if (this.y != 0) { 
      return this.y +'%'; 
     } else { 
      return null; 
     } 
    } 
} 

また、あなたは、見て、あなたが作業しているオブジェクトを見ることができるように、フォーマッタ機能でconsole.log(this)を使用するためにどのようなあなたのデータの一部を考え出す問題が発生した場合。この作業jsfiddle例アウト

チェック:助けhttp://jsfiddle.net/VLmKK/69/

願っています!

更新:空の文字列の代わりにnullを返し、Brettのコメントに記載されているように目に見えないラベルが作成されないようにします。ありがとう。

not return anythingゼロ値でもかまいません。

+0

gizmotivationありがとうございます、私は明確にするために質問を編集しました。 – Lievcin

+0

@Lievcin:フォーマッタオプションは、あなたが好きなように個々の値を個別に処理します。ハイチャートのサンプルファイルでテストしました。それは0だったデータポイントからラベルを削除しただけでしたか?試してみましたか? – christurnerio

+0

jsfiddleの例を追加しました。 http://jsfiddle.net/gizmovation/VLmKK/ – christurnerio

関連する問題