D3棒グラフミラー

kaybuzz

https://jsfiddle.net/cg3xL4da/49/

D3グラフバーを下の図のように回転/平行移動するにはどうすればよいですか。ただし、数字は完全に正しく配置されています。範囲配列パラメーターを切り替えてみましたが、バーの配​​置が反転するだけです。

ここに画像の説明を入力してください

<svg class="chart"></svg>
<script src="//d3js.org/d3.v3.min.js"></script>

<script>
var data = [4, 8, 15, 16, 23, 42];

var width = 420,
barHeight = 20;

var x = d3.scale.linear()
.domain([0, d3.max(data)])
.range([0, width]);

var chart = d3.select(".chart")
.attr("width", width)
.attr("height", barHeight * data.length);

var bar = chart.selectAll("g")
.data(data)
.enter().append("g")
.attr("transform", function(d, i) { return "translate(0," + i * barHeight + ")"; });

bar.append("rect")
.attr("width", x)
.attr("height", barHeight - 1);

bar.append("text")
.attr("x", function(d) { return x(d) - 3; })
.attr("y", barHeight / 2)
.attr("dy", ".35em")
.text(function(d) { return d; });
</script>

<style>
.chart rect {
  fill: green;
}

.chart text {
  fill: white;
  font: 10px sans-serif;
  text-anchor: end;
}
</style>
ジェラルド・フルタド

D3スケール

あなたの質問に対する答えは、D3スケールとは何か、そしてそれらの使用方法を正しく理解することです。「範囲配列パラメータを切り替えてみました」と言ったとき、あなたは正しい道を進んでいました

この回答で説明しているように、D3スケールは基本的に、ドメイン(入力)を画像または範囲(出力)にマッピングする数学的な方法です。Jerome Cukierブログからのこの画像は、さらに教訓的です。

ここに画像の説明を入力してください

あなたが見ることができるように、スケールがマップする20には、ドメイン内0の範囲内、および80ドメイン内の120範囲です。

リバースレンジ

それを念頭に置いて、あなたの質問への答えは非常に簡単です。あなたが今あなたの体重計を見れば...

var x = d3.scale.linear()
    .domain([0, d3.max(data)])
    .range([0, width]);

データ(つまり、ドメイン)のゼロがSVG空間でゼロにマップされ、データの最大値がSVGでマップされていることがわかりwidthます。したがって、範囲を逆にする必要があります。

var x = d3.scale.linear()
    .domain([0, d3.max(data)])
    .range([width, 0]);

これで、データのゼロがSVGの右端にマップされ、データの最大値がSVGの左端のゼロにマップされます。その後、rectの属性xwidth属性を調整する必要があります。

その変更を加えたコードは次のとおりです。

<svg class="chart"></svg>
<script src="//d3js.org/d3.v3.min.js"></script>

<script>
  var data = [4, 8, 15, 16, 23, 42];

  var width = 420,
    barHeight = 20;

  var x = d3.scale.linear()
    .domain([0, d3.max(data)])
    .range([width, 0]);

  var chart = d3.select(".chart")
    .attr("width", width)
    .attr("height", barHeight * data.length);

  var bar = chart.selectAll("g")
    .data(data)
    .enter().append("g")
    .attr("transform", function(d, i) {
      return "translate(0," + i * barHeight + ")";
    });

  bar.append("rect")
    .attr("x", x)
    .attr("width", function(d) {
      return width - x(d)
    })
    .attr("height", barHeight - 1);

  bar.append("text")
    .attr("x", width - 2)
    .attr("y", barHeight / 2)
    .attr("dy", ".35em")
    .text(function(d) {
      return d;
    });

</script>

<style>
  .chart rect {
    fill: green;
  }

  .chart text {
    fill: white;
    font: 10px sans-serif;
    text-anchor: end;
  }

</style>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JavaScript、CSVを使用したD3棒グラフエラー

分類Dev

JavaScript、D3棒グラフエラー

分類Dev

D3横棒グラフの正確なコピー

分類Dev

棒グラフで棒の平均を見つける-d3

分類Dev

棒グラフでズームとブラシを使用するd3

分類Dev

D3棒グラフにラベルを追加する

分類Dev

積み上げ棒グラフラベル-D3

分類Dev

mysqlデータベースを使用したd3の棒グラフ

分類Dev

D3棒グラフアニメーションを再起動します

分類Dev

D3データの更新時に前の棒グラフを削除する

分類Dev

D3棒グラフにセパレータを追加する方法

分類Dev

d3でミラーリングされたx軸(反転)棒グラフを描画するにはどうすればよいですか?

分類Dev

D3棒グラフの線による注釈

分類Dev

背景と最大値が100%のd3横棒グラフ

分類Dev

ドットとD3棒グラフの背景

分類Dev

d3レスポンシブ棒グラフ

分類Dev

D3棒グラフで最大幅を制限する方法

分類Dev

横棒グラフのテキスト-d3

分類Dev

複数の棒グラフのd3複数のy軸

分類Dev

1桁しかないd3の対数棒グラフ

分類Dev

1桁しかないd3の対数棒グラフ

分類Dev

D3棒グラフのリンク

分類Dev

D3棒グラフの遷移が機能しない

分類Dev

d3遷移積み上げ棒グラフ

分類Dev

x軸のカスタムD3`tickValue`-横棒グラフ

分類Dev

D3棒グラフの軸の癖

分類Dev

d3棒グラフの1つの棒に値を追加する方法

分類Dev

D3: 積み上げ棒グラフ exit().remove() が棒を削除しない

分類Dev

グループ化された棒グラフのD3ブラッシング

Related 関連記事

ホットタグ

アーカイブ