Для передачи этих данных в d3.partition()
, который вы будете использовать для создания солнечных лучей, все, что вам нужно, это d3.stratify
. В вашем случае:
const stratify = d3.stratify()
.parentId(function(d) {
return d.parent_id;
});
const hierarchicalData = stratify(data);
Вот демонстрация (используйте консоль вашего браузера, чтобы увидеть объект, а не фрагмент кода SO):
const data = [{
"id": 131567,
"name": "cellular organisms",
"tree_level": 1,
"display_order": 2,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": null
},
{
"id": 2759,
"name": "Eukaryota",
"tree_level": 2,
"display_order": 5,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 131567
},
{
"id": 33154,
"name": "Opisthokonta",
"tree_level": 3,
"display_order": 49,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 2759
}, {
"id": 33208,
"name": "Metazoa",
"tree_level": 4,
"display_order": 126,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 33154
}, {
"id": 6072,
"name": "Eumetazoa",
"tree_level": 5,
"display_order": 227,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 33208
}, {
"id": 33213,
"name": "Bilateria",
"tree_level": 6,
"display_order": 547,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 6072
}, {
"id": 33511,
"name": "Deuterostomia",
"tree_level": 7,
"display_order": 950,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 33213
}, {
"id": 7711,
"name": "Chordata",
"tree_level": 8,
"display_order": 1639,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 33511
}, {
"id": 89593,
"name": "Craniata",
"tree_level": 9,
"display_order": 3042,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 7711
}, {
"id": 7742,
"name": "Vertebrata",
"tree_level": 10,
"display_order": 3614,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 89593
}, {
"id": 7776,
"name": "Gnathostomata",
"tree_level": 11,
"display_order": 4245,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 7742
}, {
"id": 117570,
"name": "Teleostomi",
"tree_level": 12,
"display_order": 4684,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 7776
}, {
"id": 117571,
"name": "Euteleostomi",
"tree_level": 13,
"display_order": 4994,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 117570
}, {
"id": 8287,
"name": "Sarcopterygii",
"tree_level": 14,
"display_order": 5175,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 117571
}, {
"id": 1338369,
"name": "Dipnotetrapodomorpha",
"tree_level": 15,
"display_order": 5787,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 8287
}, {
"id": 32523,
"name": "Tetrapoda",
"tree_level": 16,
"display_order": 5945,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 1338369
}, {
"id": 32524,
"name": "Amniota",
"tree_level": 17,
"display_order": 6322,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 32523
}, {
"id": 40674,
"name": "Mammalia",
"tree_level": 18,
"display_order": 6556,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 32524
}, {
"id": 32525,
"name": "Theria",
"tree_level": 19,
"display_order": 6705,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 40674
}, {
"id": 9347,
"name": "Eutheria",
"tree_level": 20,
"display_order": 6882,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 32525
}, {
"id": 1437010,
"name": "Boreoeutheria",
"tree_level": 21,
"display_order": 7254,
"has_data": "N",
"is_leaf": "N",
"value": 18314,
"parent_id": 9347
}, {
"id": 314145,
"name": "Laurasiatheria",
"tree_level": 22,
"display_order": 7469,
"has_data": "N",
"is_leaf": "N",
"value": 48,
"parent_id": 1437010
}, {
"id": 314146,
"name": "Euarchontoglires",
"tree_level": 22,
"display_order": 7470,
"has_data": "N",
"is_leaf": "N",
"value": 18281,
"parent_id": 1437010
}, {
"id": 9443,
"name": "Primates",
"tree_level": 23,
"display_order": 7575,
"has_data": "N",
"is_leaf": "N",
"value": 17686,
"parent_id": 314146
}, {
"id": 33554,
"name": "Carnivora",
"tree_level": 23,
"display_order": 7598,
"has_data": "N",
"is_leaf": "N",
"value": 11,
"parent_id": 314145
}, {
"id": 91561,
"name": "Cetartiodactyla",
"tree_level": 23,
"display_order": 7629,
"has_data": "N",
"is_leaf": "N",
"value": 37,
"parent_id": 314145
}, {
"id": 314147,
"name": "Glires",
"tree_level": 23,
"display_order": 7675,
"has_data": "N",
"is_leaf": "N",
"value": 741,
"parent_id": 314146
}, {
"id": 9845,
"name": "Ruminantia",
"tree_level": 24,
"display_order": 7760,
"has_data": "N",
"is_leaf": "N",
"value": 16,
"parent_id": 91561
}, {
"id": 9989,
"name": "Rodentia",
"tree_level": 24,
"display_order": 7762,
"has_data": "N",
"is_leaf": "N",
"value": 741,
"parent_id": 314147
}, {
"id": 35497,
"name": "Suina",
"tree_level": 24,
"display_order": 7776,
"has_data": "N",
"is_leaf": "N",
"value": 21,
"parent_id": 91561
}, {
"id": 376913,
"name": "Haplorrhini",
"tree_level": 24,
"display_order": 7857,
"has_data": "N",
"is_leaf": "N",
"value": 17686,
"parent_id": 9443
}, {
"id": 379584,
"name": "Caniformia",
"tree_level": 24,
"display_order": 7859,
"has_data": "N",
"is_leaf": "N",
"value": 11,
"parent_id": 33554
}, {
"id": 9655,
"name": "Mustelidae",
"tree_level": 25,
"display_order": 7931,
"has_data": "N",
"is_leaf": "N",
"value": 11,
"parent_id": 379584
}, {
"id": 9821,
"name": "Suidae",
"tree_level": 25,
"display_order": 7938,
"has_data": "N",
"is_leaf": "N",
"value": 21,
"parent_id": 35497
}, {
"id": 35500,
"name": "Pecora",
"tree_level": 25,
"display_order": 7956,
"has_data": "N",
"is_leaf": "N",
"value": 16,
"parent_id": 9845
}, {
"id": 314293,
"name": "Simiiformes",
"tree_level": 25,
"display_order": 8029,
"has_data": "N",
"is_leaf": "N",
"value": 17686,
"parent_id": 376913
}, {
"id": 1963758,
"name": "Myomorpha",
"tree_level": 25,
"display_order": 8054,
"has_data": "N",
"is_leaf": "N",
"value": 741,
"parent_id": 9989
}, {
"id": 9479,
"name": "Platyrrhini",
"tree_level": 26,
"display_order": 8101,
"has_data": "N",
"is_leaf": "N",
"value": 251,
"parent_id": 314293
}, {
"id": 9526,
"name": "Catarrhini",
"tree_level": 26,
"display_order": 8102,
"has_data": "N",
"is_leaf": "N",
"value": 17435,
"parent_id": 314293
}, {
"id": 9822,
"name": "Sus",
"tree_level": 26,
"display_order": 8108,
"has_data": "N",
"is_leaf": "N",
"value": 21,
"parent_id": 9821
}, {
"id": 9895,
"name": "Bovidae",
"tree_level": 26,
"display_order": 8112,
"has_data": "N",
"is_leaf": "N",
"value": 16,
"parent_id": 35500
}, {
"id": 169418,
"name": "Mustelinae",
"tree_level": 26,
"display_order": 8190,
"has_data": "N",
"is_leaf": "N",
"value": 11,
"parent_id": 9655
}, {
"id": 337687,
"name": "Muroidea",
"tree_level": 26,
"display_order": 8202,
"has_data": "N",
"is_leaf": "N",
"value": 741,
"parent_id": 1963758
}, {
"id": 9665,
"name": "Mustela",
"tree_level": 27,
"display_order": 8256,
"has_data": "N",
"is_leaf": "N",
"value": 11,
"parent_id": 169418
}, {
"id": 9823,
"name": "Sus scrofa",
"tree_level": 27,
"display_order": 8261,
"has_data": "N",
"is_leaf": "N",
"value": 21,
"parent_id": 9822
}, {
"id": 10066,
"name": "Muridae",
"tree_level": 27,
"display_order": 8267,
"has_data": "N",
"is_leaf": "N",
"value": 741,
"parent_id": 337687
}, {
"id": 27592,
"name": "Bovinae",
"tree_level": 27,
"display_order": 8277,
"has_data": "N",
"is_leaf": "N",
"value": 16,
"parent_id": 9895
}, {
"id": 314295,
"name": "Hominoidea",
"tree_level": 27,
"display_order": 8339,
"has_data": "N",
"is_leaf": "N",
"value": 17435,
"parent_id": 9526
}, {
"id": 9604,
"name": "Hominidae",
"tree_level": 28,
"display_order": 8386,
"has_data": "N",
"is_leaf": "N",
"value": 17435,
"parent_id": 314295
}, {
"id": 9668,
"name": "Mustela putorius",
"tree_level": 28,
"display_order": 8389,
"has_data": "N",
"is_leaf": "N",
"value": 11,
"parent_id": 9665
}, {
"id": 9903,
"name": "Bos",
"tree_level": 28,
"display_order": 8395,
"has_data": "N",
"is_leaf": "N",
"value": 16,
"parent_id": 27592
}, {
"id": 39107,
"name": "Murinae",
"tree_level": 28,
"display_order": 8420,
"has_data": "N",
"is_leaf": "N",
"value": 741,
"parent_id": 10066
}, {
"id": 9669,
"name": "Mustela putorius furo",
"tree_level": 29,
"display_order": 8545,
"has_data": "N",
"is_leaf": "N",
"value": 11,
"parent_id": 9668
}, {
"id": 9913,
"name": "Bos taurus",
"tree_level": 29,
"display_order": 8547,
"has_data": "N",
"is_leaf": "N",
"value": 16,
"parent_id": 9903
}, {
"id": 10088,
"name": "Mus",
"tree_level": 29,
"display_order": 8556,
"has_data": "N",
"is_leaf": "N",
"value": 3,
"parent_id": 39107
}, {
"id": 10114,
"name": "Rattus",
"tree_level": 29,
"display_order": 8557,
"has_data": "N",
"is_leaf": "N",
"value": 740,
"parent_id": 39107
}, {
"id": 207598,
"name": "Homininae",
"tree_level": 29,
"display_order": 8606,
"has_data": "N",
"is_leaf": "N",
"value": 17435,
"parent_id": 9604
}, {
"id": 9605,
"name": "Homo",
"tree_level": 30,
"display_order": 8684,
"has_data": "N",
"is_leaf": "N",
"value": 17435,
"parent_id": 207598
}, {
"id": 9606,
"name": "Homo sapiens",
"tree_level": 31,
"display_order": 8808,
"has_data": "N",
"is_leaf": "N",
"value": 17435,
"parent_id": 9605
}
];
const stratify = d3.stratify()
.parentId(function(d) {
return d.parent_id;
});
const hierarchicalData = stratify(data);
console.log(hierarchicalData)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>