数ヶ月にわたって収集されたデータを表す折れ線グラフを作成したかったのです。私は下のコードを思いついた。問題は、私がラインがデータを正しく表現しているとは思わないということです。 path
行が "4 mo"ティックにならないことがわかり、データが約3ヶ月半で終了するとユーザーに伝えます。グラフのデータポイントをx軸のティックに整列させる
ティックに適切にマッチさせるために、すべての頂点(データポイントを視覚化した適切な用語がわからない)が必要です。最初のデータポイントは「1ヶ月」の上に、2番目のデータポイントは「2ヶ月」などと整列する必要があります。これは非常に重要です。最後のデータポイントは、グラフと月4は、軸線の終わりにもなければなりません。今のところ、行はsvgの全幅には及ばない。
var data = [
{"quarter" : "1mo", "votes" : 400},
{"quarter" : "2mo", "votes": 200},
{"quarter": "3mo", "votes" : 1000},
{"quarter" : "4mo", "votes" : 0}
]
var width = 500;
var height = 300;
//supposed to get the domain ([0, 1000])
var yscale = d3.scale.linear().domain([0, d3.max(data, function(d) {return d.votes})])
yscale.range([height, 0])
console.log(yscale(900)) //291
var xscale = d3.scale.ordinal()
.domain(data.map(function(d) {return d.quarter}))
.rangeRoundBands([0,width])
var xAxis = d3.svg.axis().scale(xscale).orient("bottom")
var line = d3.svg.line()
.x(function(d){return xscale(d.quarter) })
.y(function(d) {return yscale(d.votes) })
// .interpolate("basis")
var svg = d3.select("body")
.append("svg")
.attr({
"width" : (width + 20),
"height": height + 20
})
svg.append("g")
.append("path")
.attr("d", line(data))
.attr({
"fill" : "none",
"stroke" : "limegreen",
"stroke-width" : "3px"
})
svg.append("g")
.call(xAxis)
.attr({
"transform" : "translate(0," + (height) + ")"
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.6/d3.min.js"></script>
偉大な答えです。データが整列していることがわかります。今は、行の幅がsvgの幅を占めるべき質問の他の部分で私を助けてください。今のところ、折れ線グラフはグラフの中央にあるように見えます。それはグラフ全体を占めるように見えるはずです。グラフの左端からグラフの先頭まではスペースを入れてはいけません。最後は同じことです –
どのラインが正確に意味していますか?それはx軸ですか? – AKS
私は、パスをx軸と同じにする必要があります。それは物事を明確にするのに役立ちますか?ダニはもちろんデータポイントと一致するはずです。 –