ステップになりますケース - YMMV。
基本的に私の理解は(NVD3のソースコードから)、実際にはシリーズの色のみを設定することができるということです。したがって、私はcolor: '#rrggbb'
アイテムを値のオブジェクトに追加しますこのようなデータ構造を作成するのが簡単だからです)、次に各シリーズのカラー値を設定します(私はunderscore.jsを使用しますが、純粋なJavaScriptでこれを行うことができます)。
final_groups = _.map(groups, function(values, group_id) {
return { key: group_id, color: values[0].color, values: values };
});
カラーをポイント単位で設定するか、離散スケールを使用するのではなく、カラー連続体を使用する必要がある場合は、D3で私にカラー値を生成させるにはmbostock's advice from this answerを使用しました:
function compute_color_on_linear_scale(data, value, colorProperty, colorRange) {
// get a list of all the groups (this works if the colorProperty,
// aka z in your case, is numeric, otherwise the sort function
// needs to be adjusted accordingly)
// In your case, you could just write item.z rather than item[colorProperty]
// if your function doesn't need to be generic, and in that case you can
// omit the colorProperty argument from the argument list altogether
categories = _.uniq(_.map(data, function(item) {
return item[colorProperty];
}).sort(function(a,b){return a - b}), true);
// if no color range was provided, set a default one
if(typeof colorRange === 'undefined') { colorRange = ['red', 'green']; }
// this is mbostock's magic enchantment from his reply linked above
var color = d3.scale.ordinal()
.domain(categories)
.range(d3.range(categories.length).map(d3.scale.linear()
.domain([0, categories.length - 1])
.range(colorRange)
.interpolate(d3.interpolateLab)));
return color(value);
}
これはトリックを行う必要があります。私の最終的なタッチは、このケースではそれほど意味がないと伝え聞を隠すことでした。
zの値をツールチップに表示するには、scatterChart()のデフォルトのtooltipContent()関数をオーバーライドする必要があります。
var chart = nv.models.scatterChart()
.showDistX(true)
.showDistY(true)
.tooltipContent(function(key, x, y, obj) {
return '<h3>' + obj.point.label + ' (' + key + ')</h3>';
});
あなたは必要に応じてこのように多くをカスタマイズすることができます - あなただけの関数の先頭にconsole.log(arguments);
を追加した場合、あなたはあなたのツールチップで使用するために提供されています正確にどのデータブラウザの開発者ツールで調べることができます。
[...]
.tooltipContent(function(key, x, y, obj) {
console.log(arguments);
return '<h3>' + obj.point.label + ' (' + key + ')</h3>';
});