Comment convertir à D3 format JSON?
Tout en suivant de nombreux D3 exemples, les données habituellement est formaté dans le format donné dans les reflets.json:
{
"name": "flare",
"children": [
{
"name": "analytics",
"children": [
{
"name": "cluster",
"children": [
{"name": "AgglomerativeCluster", "size": 3938},
:
J'ai une liste d'adjacence comme suit:
A1 A2
A2 A3
A2 A4
qui je veux convertir du format ci-dessus. Actuellement, je suis en train de faire cela sur le serveur-côté, mais est-il un moyen de réaliser cela à l'aide de d3 fonctions? J'en ai trouvé un ici, mais l'approche semble nécessiter une modification de la d3 bibliothèque de base dont je ne suis pas en faveur en raison de la facilité de maintenance. Des suggestions?
- que voulez-vous dire "contiguïté"liste?
- Je pense qu'il veut dire
[(A1, A2), (A2, A3), (A2, A4)]
? - Oui c'est ce que je voulais dire! Désolé jbabey. J'aurais été plus clair.
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de format prescrit, comme vous pouvez généralement redéfinir vos données par le biais de diverses fonctions d'accesseur (comme la hiérarchie.les enfants) et tableau.carte. Mais le format que vous avez cité est probablement le plus commode de représentation pour les arbres parce qu'il travaille avec la valeur par défaut des accesseurs.
La première question est de savoir si vous avez l'intention d'afficher une graphique ou un arbre. Pour les graphiques, la structure de données est définie en termes de les nœuds et liens. Pour les arbres, l'entrée pour la mise en page est le nœud racine, qui peuvent avoir une multitude de les nœuds enfants, et dont les nœuds feuilles sont associés à un valeur.
Si vous souhaitez afficher une graphique, et tout ce que vous avez une liste d'arêtes, alors vous aurez envie de faire une itération sur les bords afin de produire un tableau de noeuds et d'un tableau de liens. Dire que vous avez un fichier appelé "graphe.csv":
Vous pouvez charger ce fichier à l'aide d3.csv et puis de produire un tableau de nœuds et de liens:
Vous pouvez ensuite passer ces nœuds et des liens à la force de mise en page pour visualiser le graphique:
Si vous voulez produire un arbre au lieu de cela, vous aurez besoin de faire une forme légèrement différente de transformation de données à accumuler les nœuds enfants de chaque parent.
Comme suit:
D3 n'a pas besoin d'un format spécifique. Tout dépend de votre application. Vous pouvez certainement convertir une liste d'adjacence au format utilisé dans les reflets.json, mais ce nouveau serait spécifique à l'application du code. En général, vous ne pouvez pas le faire comme les listes d'adjacence en tant que tels n'ont pas de "tête" ou "racine" des éléments dont vous auriez besoin pour construire un arbre. En outre, vous avez besoin pour gérer les cycles, les orphelins, etc. séparément.
Étant donné que vous êtes en train de faire la conversion sur le côté serveur, je serais tenté de dire que "si elle n'est pas cassé, ne le répare pas" 😉