2

d3 を使用して 1 つのグラフに複数の線を描画し、ブラシ機能を実装しようとしています ( http://bl.ocks.org/1667367 )

ここに画像の説明を入力

コードの下の部分では、右側に各行の名前が表示されます。

focudraw.select("text")
  .datum(function(d){
      return {name:d.name,value : d.values[d.values.length-1]};
  })
  .attr("transform",function(d){ 
      return "translate("+x(d.value.date)+","+y(d.value.price)+")"
    })
  .text(function(d){return d.name});

ただし、 contextdraw(on the below) を移動するときに動的にブラッシングすると、そのテキストの位置は変わらず、変更する考えがあまりありません。

ブラシ関数の focudraw.select("text") に焦点を当て、d.values のインデックスを右に変更する必要があると思います。新しいx.domain()[ 1 ] を d.values の最後のインデックスにマップする方法を知っています。しかし、位置はそれほど正確ではありません...

function brush(){
x.domain(brush.empty() ? navx.domain() : brush.extent());

focudraw.select("path").attr("d",function(d){
  return line(d.values);    
});


focudraw.select("text")
  .datum(function(d){
      return {name:d.name,value : d.values[d.values.length-1]};
  })
  .attr("transform",function(d){ 
      return "translate("+x(d.value.date)+","+y(d.value.price)+")"
    })
  .text(function(d){return d.name});


focu.select(".x.axis").call(xAxis);

}

4

0 に答える 0