13

私は自分のサイトにhighchartsを実装していますが、プレゼンテーションの観点からは困難であることが証明されています。

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

私はこのようなことをしようとしています:

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

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

いくつかのアプローチを確認しましたが、ゼロはシリーズの1つに含まれています。そのため、グループのゼロではない値のラベルを表示したいと思います。

私はこれを言うとき、それは個々のシリーズではなく、グループ全体の価値をとると思います...

助言がありますか?明らかに私は何か間違ったことをしています!

4

1 に答える 1

55

formatterのオプションを使用してみましたdataLabelsか?その中のデータにアクセスして、ラベルをどのように表示するかを決定できるはずです。ここでは、ゼロをチェックして、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/

お役に立てば幸いです。

更新:Brettのコメントに記載されているように、非表示のラベルが作成されないように、空の文字列ではなくnullを返します。ありがとう。

また、ゼロ値では何も返さない場合があります。

于 2012-05-26T13:02:03.613 に答える