D3.js: получение каждого уникального значения в порядковом масштабе
Я хочу получить каждое уникальное значение в порядковом масштабе (построенный из массива массива). Допустим, это мой набор данных:
var people = [
["Mary", "Mary Smith", "ID00001", 9.99 ],
["James", "James Smith", "ID00002", 19.99 ],
["Frank", "Frank Black","ID00003", 19.96 ],
["Mary","Mary Brown","ID00004", 9.95 ],
["Tony", "Tony Stark", "ID00005", 2319.99 ],
["Frank", "Frank Howard","ID00006", 219.96 ],
["Mary","Mary Brown","ID00004", 339.95 ]
];
и затем я строю свою шкалу из этих данных:
var ordScale = d3.scale.ordinal()
.domain(people.map( function (d) { return d[0]; }))
.rangeBands([0, 10], 0);
То есть, несмотря на шесть разных людей, в моем домене останется только четыре имени (насколько я верю!):
- Мэри
- Джеймс
- Фрэнк
- Тони
У меня есть два вопроса по этому поводу:
- Как проверить, что находится в порядковом масштабе в console.log?
- Предполагая, что я прав, и в порядковой шкале есть только четыре значения, как мне их алфавитировать?
2 ответа
Решение
Есть две вещи, которые вы можете проверить относительно масштаба: домен и диапазон. Похоже, вы заинтересованы в домене, так что вы можете проверить это, вызвав соответствующий метод:
console.log(ordScale.domain());
Демо здесь.
Что касается вашего второго вопроса, вы можете просто отсортировать массив, прежде чем передать его .domain()
:
people.map( function (d) { return d[0]; }).sort();
Демо здесь.