Я пытаюсь нарисовать несколько графиков на одном изображении svg на основе хромосомных данных. Цель состоит в том, чтобы нарисовать по одному графику на каждую хромосому. Я хочу транспонировать ось (и данные) на основе номера хромосомы в данных.
Записи данных выглядят так (в формате JSON):
[{ "chrom": 1, "pos": 2000000, "ratio": 0.0253, "average": 0.0408, "stdev": 0.0257, "z-score": - 0.6021 }, { "chrom": 1, "pos": 2250000, "ratio": 0.0304, "average": 0.0452, "stdev": 0.0245, "z-score": - 0.6021 }, { "chrom": 1, "pos": 2500000, "ratio": 0.0357, "average": 0.0498, "stdev": 0.024, "z-score": - 0.5885 }, { "chrom": 1, "pos": 2750000, "ratio": 0.0381, "average": 0.0522, "stdev": 0.0228, "z-score": - 0.6146 }, {etc..}
В настоящее время мой код выглядит так:
d3.json("data.json", function(error, data) { if (error) throw error; x.domain(d3.extent(data, function(d) { return d.pos; })); y.domain(d3.extent(data, function(d) { return d['ratio']; })); svg.append("g") .attr("class", "x axis") .data(data) //.attr("transform", "translate(0," + graph_height + ")") .attr('transform', function(d) { if (d.chrom > Math.ceil(chrnumber / 2)) { console.log('translate('+ graph_width + graph_margin.center + ',' + graph_height + d.chrom * (graph_height + graph_margin.top) + ')'); return 'translate('+ graph_width + graph_margin.center + ',' + graph_height + d.chrom * (graph_height + graph_margin.top) + ')'; }else { console.log('translate(0,' + graph_height + d.chrom * (graph_height + graph_margin.top) + ')'); return 'translate(0,' + graph_height + d.chrom * (graph_height + graph_margin.top) + ')'; } }) .call(xAxis); });
Но это не дает ни ошибок, ни вывода. Я полагаю, что в приведенном выше коде есть какая-то ошибка, потому что изображение svg не создается на странице.
Есть ли у кого-нибудь идеи, где я ошибся?