0

デフォルトの線形スケールを使用して地平線チャートを正常に描画しましたが、見栄えがします。残念ながら、d3.scale.log()スケーラーを使用しようとすると、グラフが表示されません。エラーはなく、何もありません。問題は入力データのゼロにあると思っていましたが、メトリックがゼロ以外の単一の値を返した場合でも、これが発生します。次に例を示します。

context = cubism.context(), horizon = context.horizon();
horizon.scale(d3.scale.log());
var flatMetric = context.metric(function(start, stop, step, callback) {
  var values = [];

  // convert start & stop to milliseconds
  start = +start;
  stop = +stop;

  while (start < stop) {
    start += step;
    values.push(10);
  }

  callback(null, values);
});
d3.select("body").selectAll(".horizon")
  .data([flatMetric]).enter().append("div")
  .attr("class", "horizon")
  .call(horizon);

対数目盛を線形目盛に置き換えるだけで、すべてが正常に機能します。

4

1 に答える 1

2

面グラフ(水平グラフは特殊なケースです)は、対数スケールでは意味がありません。ゼロは無限大です。実際には、座標が±InfinityまたはNaNであるため、これはレンダリングエラーとして現れます。

対数目盛を使用する場合は、折れ線グラフなど、ベースラインがゼロでない別の種類のグラフが必要になります。比較チャートも機能する可能性があります。地平線チャートを保持したいが、線形スケールを使用したくない場合は、sqrt(またはより一般的にはpow)スケールを試してください。

于 2012-08-12T21:40:51.627 に答える