これが私が持っているものです:
http://jsfiddle.net/bozdoz/Q6A3L/
背景バーのコード:
maxData = 80000000;
maxHeight = 250;
var yScale = d3.scale.linear().
domain([0, maxData]). // your data minimum and maximum
range([0, maxHeight]); // the pixels to map to, e.g., the height of the diagram.
var riskpoints = [62000000,48000000,30000000];
var rectDemo = d3.select("#chart").
append("svg:svg").
attr("width", 400).
attr("height", maxHeight).
attr('class','risk');
rectDemo.append("svg:rect").
attr("x",0).
attr("y", maxHeight - yScale(riskpoints[0])).
attr("height", yScale(riskpoints[0]) - yScale(riskpoints[1])).
attr("width", '100%').
attr("fill", "rgba(0,100,0,.3)");
rectDemo.append("svg:rect").
attr("x",0).
attr("y", maxHeight - yScale(riskpoints[1])).
attr("height", yScale(riskpoints[1]) - yScale(riskpoints[2])).
attr("width", '100%').
attr("fill", "rgba(100,100,0,.3)");
rectDemo.append("svg:rect").
attr("x",0).
attr("y", maxHeight - yScale(riskpoints[2])).
attr("height", yScale(riskpoints[2])).
attr("width", '100%').
attr("fill", "rgba(100,0,0,.3)");
赤、黄、緑の背景バーを固定の高さにしたことを除けば、これはまさに私が望むものです。
スライダーを使用するとき、またはさらに重要なことに、グラフが再生成されるとき(実際のデータで再生成される)、背景バーを正しい高さに調整する必要があります。
たとえば、画像では、緑色のバーは300Mから200Mの間のどこかにあります。赤(縦)のバーを除くすべてのグラフデータを削除すると、緑のバー(横)は40Mのすぐ上になります。これは、背景バーの位置/高さが再生成されないのに対し、グラフデータの位置/高さは人力車のJavaScriptを介して再生成されるためです。
このデータを人力車のグラフに入れて再生成するにはどうすればよいですか?