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); 

То есть, несмотря на шесть разных людей, в моем домене останется только четыре имени (насколько я верю!):

  • Мэри
  • Джеймс
  • Фрэнк
  • Тони

У меня есть два вопроса по этому поводу:

  1. Как проверить, что находится в порядковом масштабе в console.log?
  2. Предполагая, что я прав, и в порядковой шкале есть только четыре значения, как мне их алфавитировать?

2 ответа

Решение

Есть две вещи, которые вы можете проверить относительно масштаба: домен и диапазон. Похоже, вы заинтересованы в домене, так что вы можете проверить это, вызвав соответствующий метод:

console.log(ordScale.domain());

Демо здесь.

Что касается вашего второго вопроса, вы можете просто отсортировать массив, прежде чем передать его .domain():

people.map( function (d) { return d[0]; }).sort();

Демо здесь.

ordScale.domain() должен дать значения, которые вы ищете

Другие вопросы по тегам