3

JavaScript を使用して複数の CSV ファイルをロードする必要があり、ロードされた各データセットのいくつかのプロパティを変更する必要があるため、少し混乱しています。したがって、基本的に私はd3と呼ばれるこのフレームワークを使用しており、3つのcsvファイルをロードしてから、csvファイルごとに、平行座標プロット用にプロットされた線の色を変更する必要があります. 現在、私は 3 つのデータ ロードを使用していますが、これによりプロットが台無しになり、全体に値が表示されます。

 // load csv file and create the chart
d3.csv('X.csv', function(data) {
pc = d3.parallelCoordinates()("parallelcoordinates")
    .data(data)
    .color(color)
    .alpha(0.4)
    .render()
    .brushable()  // enable brushing
    .interactive()  // command line mode

var explore_count = 0;
var exploring = {};
var explore_start = false;
pc.svg
    .selectAll(".dimension")
    .style("cursor", "pointer")
    .on("click", function(d) {
        exploring[d] = d in exploring ? false : true;
        event.preventDefault();
        if (exploring[d]) d3.timer(explore(d,explore_count,pc));
});

以上の3回を行っています。ここで、すべてのデータが同じグラフにプロットされますが、値が重なります (基本的に、3 つのグラフが重なり合っています)。私はそれをすべて統合したいと思っています。そのための最善の方法は、JS ファイルをスマートにロードして、何らかの方法で操作することだと思います。方法はわかりませんが。誰かが私にこれを達成する方法を教えてくれますか?

4

2 に答える 2

8

このスレッドは役に立ちます: https://groups.google.com/forum/#!msg/d3-js/3Y9VHkOOdCM/YnmOPopWUxQJ

リンクからの最良の解決策(IMO)は次のとおりです。

  var rows1, rows2, remaining = 2;

  d3.csv("file1.csv", function(csv) {
    rows1 = csv;
    if (!--remaining) doSomething();
  });

  d3.csv("file2.csv", function(csv) {
    rows2 = csv;
    if (!--remaining) doSomething();
  });

  function doSomething() {
   // … do something with rows1 and rows2 here …
  }
于 2014-02-19T22:39:03.303 に答える
2

d3キューを使用して、ファイルを同時にロードできます。例;

d3.queue()
.defer(d3.csv, "file1.json")
.defer(d3.csv, "file2.json")
.defer(d3.csv, "file3.json")
.await(function(error, file1, file2, file3) {
    if (error) {
        console.error('Oh dear, something went wrong: ' + error);
    }
    else {
        doSomeStuff(file1, file2, file3);
    }
});
于 2016-09-14T06:43:20.253 に答える