Вопрос по – Как работает d3.scale.quantile?

14

В чем смысл этого утверждения?

quantize = d3.scale.quantile().domain([0, 15]).range(d3.range(9));

Я видел, что домен:

0 - 0
1 - 15

диапазон от 0 до 8 и quantize.quantiles

0 - 1.6
1 - 3.3
2 - 4.9
3 - 6.6
4 - 8.3
5 - 9.9
6 -11.6
7 -13.3

Как рассчитываются значения quantize.quantiles? Я пытался позвонитьquantize(2) но результат был1, Какquantile Работа?

Может быть, вы знаете, что означает квантиль и как он работает? user1365697
Если вы хотите лучше понять, как работают эти весы, вы можете поиграть с этим интерактивнымvisualization Я сделал. Dave

Ваш Ответ

2   ответа
5

документация по квантильной шкалеособенно на quantize.quantiles ()

Но в основном d3 видит, что в этом диапазоне есть 9 значений в этом диапазоне, поэтому он создает 9 квантилей на основе набора данных 2 значений: [0, 15].
Это приводит к значениям quantize.quantiles (), которые вы показываете в своем вопросе: [1.6, 3.3, .., 13.3], они представляют границы квантилей - все, что меньше 1.6, будет сопоставлено первому элементу вывода диапазон (в этом случае ноль). Все, что меньше 3,3 и больше 1,6, будет сопоставлено со вторым элементом выходного диапазона (один). Следовательно, квантование (2) = один, как и ожидалось.

22

чтобы получить классы, которые представляют фактическое распределение значений в наборе данных. Следовательно, необходимо обеспечить его при построении полным списком значений. Затем шкала разделяет входную область (определяемую этими значениями) на интервалы (квантили), так что примерно одинаковое количество значений попадает в каждый из интервалов.

Из документации:

To compute the quantiles, the input domain is sorted, and treated as a population of discrete values.

Следовательно, при указании домена мы передаем в масштабе весь список значений:

var scale = d3.scale.quantile()
  .domain([1, 1, 2, 3, 2, 3, 16])
  .range(['blue', 'white', 'red']);

Если мы тогда запустим:

scale.quantiles()

Он выведет [2, 3], что означает, что наша совокупность значений была разделена на эти три подмножества, представленные как «синие», «белые» и «красные». соответственно:

[1, 1] [2, 2] [3, 3, 16]

Обратите внимание, что этой шкалы следует избегать, когда в данных, которые вы хотите показать, есть выбросы. В приведенном выше примере 16 - выброс, попадающий в верхний квантиль. Ему присваивается тот же класс, что и 3, что, вероятно, не является желаемым поведением:

scale(3)   // will output "red"
scale(16)  // will output "red"

Похожие вопросы