Как рассчитать вес в диаграмме Санки? - PullRequest
0 голосов
/ 28 июня 2018

Я рассматриваю вопрос об использовании диаграммы Санки, но не могу четко понять, как рассчитать веса.

Давайте предположим случай, когда сущность (one) делится на hello и world, соответственно на 70% и 30%.

hello затем делится на aaa и bbb, а также 70/30.

Из документации я подумал, что веса были относительно выходного узла (код также в JSFiddle и CodePen - по какой-то причине тот же код отказывается работать в SO фрагмент ниже):

Highcharts.chart('container', {
	series: [{
        keys: ['from', 'to', 'weight'],
        data: [
            ['One', 'hello', 70],
            ['One', 'world', 30],
            ['hello', 'aaa', 70],
            ['hello', 'bbb', 30],

        ],
        type: 'sankey', 
    }]
});
#container {
    min-width: 300px;
    max-width: 800px;
    height: 400px;
    margin: 1em auto;
    border: 1px solid silver;
}
<script src="https://code.highcharts.com/modules/sankey.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<div id="container"></div>

Однако это не так: оба world и bbb имеют одинаковый размер, а именно 30.

Это означает, что веса являются абсолютными: в моем случае мне нужно взять 100 и распределить его соответственно между world (30), aaa (70 * 0.7 = 49) и bbb (70 * 0,3 = 21).

Если это так, куда я должен поместить world, поскольку он рассчитывается автоматически из других данных? (это «промежуточный» результат)

1 Ответ

0 голосов
/ 28 июня 2018

Я наконец-то проработал цифры. Ключ должен использовать абсолютные числа, но вычислять их для каждого шага.

В примере моего вопроса это будет:

  • one: 100 (фиксированный)
  • world: 30 (исправлено)
  • hello: 70 (исправлено)
  • aaa: 49 (рассчитано 70 * 0,7 = 49)
  • bbb: 21 (рассчитано 70 * 0,3 = 21)

Это приводит к следующему коду .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...