2015-08-14 2 views
4

Я нарисовал оси в d3, используя метод d3.extent, чтобы определить максимальные и минимальные значения для оси.d3 js - как инвертировать d3.extent

Однако по умолчанию d3 рисует ось y вверх дном (d3 bar chart is upside down), и мне нужно его инвертировать.

Как я могу рассказать о методе, чтобы инвертировать результаты?

+0

показать нам, что вы пробовали до сих пор, в идеале с некоторой скрипкой или подобным – jarandaf

+0

Мне удалось найти способ заставить его работать, но было интересно, есть ли в нем одна функция! –

+2

Хорошо, теперь я понимаю ... однострочный: 'd3.time.scale(). Domain (d3.extent (data.History, function (d) {return d.ArrivalTime;}). Reverse()) '... – jarandaf

ответ

5

Вы можете использовать d3.extent функцию в сочетании с reverse:

var yScale = d3.time.scale() 
       .domain(d3.extent(data.History, function (d) { return d.ArrivalTime; }).reverse()) 
       .range([margin.top, chartHeight - margin.top * 2]); 
0

Мне удалось сделать это вручную, используя следующий код. Я не могу найти аккуратнее путь, чем это:

var yMax = d3.max(data.History, function (d) { return d.ArrivalTime }); 
var yMin = d3.min(data.History, function (d) { return d.ArrivalTime }); 

var yScale = d3.time.scale() 
       .domain([yMax, yMin]) 
       .range([margin.top, chartHeight - margin.top * 2]);