比較的新しいd3とnvd3で、exampleのように単純な散布図を作成したいと考えていましたが、y軸はordinalです。したがって、y軸の値はカテゴリ文字列です。これは私が私が行うために必要と思ったものです:nvd3散布図
var xfun = function (d) { return d.Pos } //simple ints
, yfun = function (d) { return d.Title } //the ordinal values
var chart = nv.models.scatterChart()
.showDistX(true)
.showDistY(true)
.color(d3.scale.category10().range())
.margin({ top: 30, right: 20, bottom: 50, left: 130 })
.tooltips(false)
.x(xfun)
.y(yfun);
// create an ordinal scale with some test values
var ys = d3.scale.ordinal()
.domain(["this","is","an","ordinal","scale"])
.range(5);
// tell nvd3 to use it
chart.yAxis.scale(ys);
// add to the page
nv.addGraph(function() {
d3.select(selector).datum(data).transition().duration(500).call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
はしかし、運:
Error: Invalid value for <circle> attribute cy="NaN" d3.js:690
Error: Invalid value for <line> attribute y1="NaN" d3.js:690
Error: Invalid value for <line> attribute y2="NaN" d3.js:690
Error: Invalid value for <circle> attribute cy="NaN" d3.js:7532
Uncaught TypeError: Cannot read property '0' of undefined
..
とY軸は、単にIterestinglyいくつかの円がある-1から1の直線軸を示していませんy = -1およびy = 1(極値)でプロットされている。
d3.selectAll("#mychart circle").attr("cy", function(d){
return = ys(yfun(d));
});
それでも同じエラー:手動Iは、コール(チャート)の後に追加しようとしたCYの正しい値を強制的に
。順序尺度を正しく機能させるにはどうすればよいですか?注:nvd3凡例を使用してdataseries(異なるx/yデータを含む)を切り替えるときにも、正しく更新する必要があります。
githubにはrelated questionがありますが、解決策はありません。
更新:いくつかのデバッグの後、私はchart.scatter.y(ys)
でchart.yAxis.scale(ys)
を交換しようと、これはエラーを取り除きます。マニュアルselectAll
を削除することもできます。
しかし、y軸は依然として0.99-1.01の直線尺度を示し、すべての点はy = 1にプロットされています。だから一歩近づいているが、序数はまだない。
uは、元scaterrplotを視察している... uは参照円は円ではありません。彼らは円形の道drwanです:) –
@Dom:そうかもしれないが、それでもまだsvg要素について不平を言って、私は間違いなくドムのように見えるかもしれません(しかし、すべてcyのNaN値を持つ) –
dgorissen