Domanda

Avendo visto Alcuni suggerimenti per i grafici, mi chiedo quale sia l'ottimale per il mio problema.

Voglio eseguire il rendering di un grafico diretto su un servlet/immagine visualizzato nel browser.Dovrebbe esserci una sorta di ottimizzazione della posizione.Non sarebbe preferibile alcuna dipendenza da Swing.Gli algoritmi non sono importanti, poiché la struttura del grafico è determinata dalla logica aziendale.Sarebbe auspicabile poter aggiungere etichette anche ai bordi.sarebbe ottimale se potessi servirlo come png/svg.

Quale biblioteca/servizio consiglieresti?

chiarimenti:

1) La domanda riguarda i grafici Grafico aciclico diretto - NON - Grafici.

2) flot, Google Charts: non è possibile tracciare grafici, solo grafici o mi sono perso qualcosa?

3) no, non ho bisogno dell'interattività

4) graphviz sarebbe carino, ma la libreria java grappa è piuttosto obsoleta ed è basata su swing/awt.anche se teoricamente potrebbe essere possibile eseguire il rendering dello swing sulle immagini, non sarebbe il mio modo preferito per farlo in un'app server.

5) andrebbe bene utilizzare un servizio online in cui le immagini non siano ospitate localmente.

modificare:aggiunti collegamenti a Wikipedia per chiarire il termine grafico/grafico

È stato utile?

Soluzione

Oltre ad aspettare settimane per conoscere Magic Framework che risolverà tutti i tuoi problemi in una riga di codice, c'è anche l'altra opzione di scrivere semplicemente del codice da solo per fare esattamente quello che vuoi...(Non sto dicendo che siano 10 minuti di lavoro, ma probabilmente sono uno o due giorni e hai pubblicato la tua domanda più di due settimane fa...)

Hai dato un'occhiata, ad esempio, alla voce di Wikipedia su Algoritmi basati sulla forza-- contiene uno pseudocodice e alcuni collegamenti che potrebbero essere utili.

Presumo che il problema sia l'algoritmo di layout, e non la questione di creare una BufferedImage, disegnarla nel suo contesto grafico, codificarla PNG e inviarla tramite socket.Non hai davvero bisogno di un framework per Quello un po', non credo.

Altri suggerimenti

Dare un'occhiata a graphviz

yFile potrebbe essere utile per questo.

Che ne dici della componente punto di Graphviz?Produce grafici (non tabelle), output in PNG e SVG e supporta l'etichettatura dei bordi.Puoi sborsare to dot per generare l'immagine che ti serve e restituire un tag img che fa riferimento a quella.In alternativa, puoi restituire un tag img che fa riferimento a un URL che genererà il grafico richiesto (o recupererà una copia memorizzata nella cache).Ecco le informazioni sul punto:

http://www.graphviz.org/pdf/dotguide.pdf

Potresti anche dare un'occhiata a WebDot, che apparentemente è progettato per questo scopo:

http://www.graphviz.org/webdot/

Tentativo aiSee.Viene utilizzato da tutti i tipi di applicazioni basate sul Web per estrazione dei dati, analisi statica del programma, visualizzazione della matrice, analisi di rete, e quant'altro.Viene utilizzato anche da alcuni MediaWiki come backend del layout grafico.

Hanno un enorme database di grafici campione su aiSee.com.Controlla.Supporta le etichette dei bordi, l'esportazione in SVG e HTML mappati e non dipende da Swing.

Noi creiamo mxGraph per tali requisiti.In realtà l'abbiamo pubblicato nel 2006, ma ci è voluto un po' per notare questa domanda...

Per lato server, Tentativo JUNG, puoi confrontarlo Batik e produci bellissimi file SVG o PNG.JUNG ha un bel design e algoritmi di layout molto potenti...

Inoltre, visto che lo dici "andrebbe bene usare un Servizio Online", graphviz fornisce un servizio chiamato webdot per eseguire il rendering dei grafici.

Ce ne sono anche altri su questa linea...per esempio. http://graph.gafol.net/ (sembra essere giù)

Dalla parte del cliente:

  • Tentativo http://arborjs.org/ per una libreria minimale (più o meno) è dedicata al layout, usa questa se preferisci preferire le tue routine di rendering (div, canvas, svg, paper.js, elaborazione...eccetera).

  • mi piace anche http://sigmajs.org/ per un approccio più completo, incorpora supporto touch, plug-in, formati di file, ecc.

È interessante notare che il progetto Eclipse ha un componente/framework SWT/JFace in grado di visualizzare e generare (importare/esportare) il formato "DOT" di Graphviz, in puro Java:

ZEST (home page e link per il download)

Vedere http://wiki.eclipse.org/Graphviz_DOT_as_a_DSL_for_Zest per esempi di utilizzo.

Sebbene ZEST sia pubblicizzato come plug-in Eclipse, sembra che le API di manipolazione DOT possano essere utilizzate in modo autonomo ed esterno a un'installazione Eclipse.

Saluti

Ricco

Puoi provare sigma.js: http://sigmajs.org/

È una libreria leggera e open source in Javascript per visualizzare grafici di grandi dimensioni sul Web.

JPGD è un parser Graphviz in Java.È un poco abbandonato, ma il codice è carino e chiaro e se trovi bug sono sicuro che l'autore accetterà le correzioni apportate.

Sebbene pubblicizzato come parser, è anche un generatore.Puoi creare grafici come raccolte di oggetti Node e Edge, quindi ottenere .dot utilizzando Graph.toString().Ottenere questo come grafico sarebbe un semplice sbarco nell'eseguibile del punto Graphviz.

In alternativa, punto è molto facile da generare da solo.Nel caso più semplice, è solo questione di scrivere un'intestazione in vaso

digraph myGraph {

...seguito da una definizione di bordo per bordo

node1 -> node2 ;

...seguito da una parentesi graffa di chiusura

}

quindi ho dato un'occhiata a tutte le risposte e ai collegamenti forniti, sembra Prefuso/Bagliore farà la scelta ottimale.hanno visualizzazioni molto accattivanti, inoltre hanno il supporto integrato per i grafici.

Forse controlla Grafici di Google?

Puoi usare SVG in combinazione con Batik.L'ho usato più volte per visualizzare la grafica.Batik con Java 1.5 è molto veloce.Con questa soluzione puoi programmare il tuo grafico in Java senza dipendenza da Swing.Puoi aggiungere etichette dove vuoi, ospitarle come Servlet e visualizzarle come PNG o SVG.

Puoi creare i grafici in SVG (questo è un documento XML).
Usate Batik per trasformare il documento SVG in un'immagine PNG/JPG.
È possibile utilizzare un servlet per trasmettere questa immagine al browser.

In Java crei un documento SVG (= XML).Gli esempi di grafici SVG possono essere trovati qui:Grafico diretto e qui: Grafo diretto semplice

Vedere questa domanda, in particolare la risposta di Stephan sul prefuse.Ho letto che non è necessaria l'interattività, ma Prefuse potrebbe comunque essere utile.

Posso consigliarlo con tutto il cuore flottare - eccellente!

Vedere esempi qui.

JFreeChart potrebbe essere la strada che vuoi seguire, ma fai una distinzione tra grafici e grafici.Forse puoi spiegare cosa intendi con questo.Di solito utilizzo questi termini come sinonimi.:)

JFreeChart ha buoni grafici a dispersione, a barre e a linee, oltre a grafici divertenti come Pie e Dial, quindi forse funzionerà per te.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top