Ancora una volta mi rispondo da solo...![]()
Posto di modo che i posteri possano trovare facilmente la risposta.
Il file json era da cambiare in quanto l'esempio del diagramma alluvial postato in precedenza accetta un'altro tipo di configurazione dell'oggetto, in particolare una cosa di questo tipo:
L'array "times" quindi contiene la descrizione dei nodi, mentre l'array "link" contiene la descrizione dei collegamenti tra nodo e nodo.codice:{ "times":[ [ { "id":0, "nodeName":"Node 0", "nodeValue":1.6540751387365162, "incoming":[] }, { "id":1, "nodeName":"Node 1", "nodeValue":9.454112163744867, "incoming":[] }, { "id":2, "nodeName":"Node 2", "nodeValue":1.1586284558288753, "incoming":[] }, [... altri array di oggetti che specificano l'id e il nome del nodo oltrechè la grandezza totale che dovrà avere graficamente ...] ] ], "links":[ { "source":0, "target":12, "value":0.43196107650089643 }, { "source":0, "target":11, "value":1.2221140622356197 }, { "source":1, "target":8, "value":4.204383976379911 }, [... altri oggetti che specificano l'id del nodo da cui parte il collegamento e l'id del nodo sul quale finisce oltrechè la grandezza della linea di collegamento ...] ] }
Il valore della grandezza del nodo nell'array "times" deve essere uguale alla somma dei valori di grandezza dei collegamenti che partono od arrivano al nodo stesso: questo vuol dire, ad esempio, che il valore "nodeValue" del nodo che ha "id" = 0 deve essere uguale alla somma dei valori dell'array "link" dei nodi che hanno "source" = 0.
Nell'esempio specifico quindi:
1.6540751387365162 = 0.43196107650089643 + 1.2221140622356197
perchè ci sono solo due collegamenti che partono dal nodo con "id" = 0
Per leggere tale json basterà fare quanto segue usando jQuery e quindi ricordandosi di importare l'apposita libreria:
In pratica ho eliminato tutta la parte in cui lo script precedente si creava i valori casuali.codice:$.ajax({ url: 'mioJson.json', async: false, dataType: 'json', success: function (data) { /* Process Data */ [... qui aggiungere tutta la parte che va da "Process Data" fino alla fine dello script postato nel precedente post, poi basta chiudere la funzione ajax di jQuery ...] } });
A questo punto basta creare un programma, anche in PHP, che crea il json dai dati del database.
Magari per creare il json ci sono metodi più furbi, ma al momento non me ne vengono in mente altri...

Rispondi quotando