Dopo aver visto il complesso TCP state diagram example di dagre-d3, ho pensato che sarebbe stato in grado di risolvere diagrammi di complessità simile. Nello schema seguente, questo chiaramente non è il caso. Se i due nodi contrassegnati sono stati scambiati, tutti gli incroci sarebbero stati risolti. diagrammi di flusso in d3js utilizzando dagre-d3 o colajs
Un'altra cosa interessante è che come buono il grafico viene risolto sembra dipendere dall'ordine regolano i bordi in.
il seguente codice
g.setEdge("148570019_1100", "148570020_1100", { label: "" });
g.setEdge("148570019_1100", "148570021_1100", { label: "" });
g.setEdge("148570019_1100", "148570010_1100", { label: "" });
non dà gli stessi risultati come questo:
g.setEdge("148570019_1100", "148570010_1100", { label: "" });
g.setEdge("148570019_1100", "148570020_1100", { label: "" });
g.setEdge("148570019_1100", "148570021_1100", { label: "" });
vedere questi due esempi:
Come suggerito, ho cercato di usare cola.js invece, e questo è ciò che nello stesso grafico si presenta come:
Come si vede, colajs è meglio a incrocio riduzione, ma il layout non è così strutturato e chiaro come quello di Dagre. Io uso le seguenti impostazioni per colajs:
cola.d3adaptor()
.avoidOverlaps(true)
.convergenceThreshold(1e-3)
.symmetricDiffLinkLengths(20)
.flowLayout('x', 150)
.size([width, height])
.nodes(nodes)
.links(edges)
.constraints(constraints)
.jaccardLinkLengths(300);
E 'possibile configurare colajs in un modo che lo fa apparire più strutturato, simile a Dagre? E Dagre semplicemente non è in grado di risolvere qualcosa del genere, o è possibile configurarlo in un modo che è?
puoi illustrare (con un'immagine forse), quale sarebbe il rendering ideale? –
@adarren scusate, l'ho scritto nel testo ma poi ho dimenticato di modificare l'immagine: se i due nodi marcati sono stati scambiati, tutti gli incroci sarebbero stati risolti. – cdMinix
grazie per aver aggiornato la tua immagine. Penso che Dagre dovrebbe essere in grado di gestire il tuo scenario, e * penso * potrebbe essere correlato ai tuoi dati .. sei in grado di creare un jsbin/jsfiddle/etc per il tuo problema? –