1

json / arrayからのd3.jsタグクラウドサイズからのさらなる質問?

var jWord = ["abc","def","ghi","jkl"];
var jCount = [2, 5, 3, 8];

  d3.layout.cloud().size([650, 140])
      .words(d3.zip(jWord, jCount).map(function(d) {
        return {text: d[0], size: d[1]};
      }))
      .rotate(function() { return 0; })
      //.rotate(function() { return ~~(Math.random() * 2) * 90; })
      .fontSize(function(d) { return d.size; })
      .on("end", draw)
      .start();

ここで、jCountの元の値をtextsizeとして使用します。jCountが異なる可能性があると想定して、サイズ範囲(最小10pxから50px)を設定したいと思います。

var maxCount = d3.max(jCount);
var s = d3.scale.linear().domain([10,50]),range([0, maxCount)]);

それから私は変わりました

  .words(d3.zip(jWord, jCount).map(function(d) {
    return {text: d[0], size: s};
  }))

「size:s」の部分を他の多くの推測された形式に変更しましたが、機能しません。私はまだd3.js/jquery / svg構文に精通しているので、今のところ、これを設定する方法を実際に理解することはできません。助けてください!

4

1 に答える 1

3

sドメインを範囲にマッピングする関数です。したがって、行を次のように変更します

.words(d3.zip(jWord, jCount).map(function(d) {
  return {text: d[0], size: s(d[1]) };
}))

また、スワップ.domain.rangeて、の定義でs(そしてコンマをドットに変更して)-.domain入力範囲と.range出力範囲を設定する必要があります。

于 2012-05-23T20:57:27.593 に答える