comandos clusvcadm cluster java graph server-side graph-layout

java - cluster - clusvcadm



Gráfico optimizado para la web (16)

Después de haber visto algunas sugerencias de gráficos, me pregunto cuál es el óptimo para mi problema.

Quiero renderizar un gráfico dirigido a un servlet / imagen que se muestra en el navegador. Debería haber algún tipo de optimización de posición. No se prefiere ninguna dependencia a Swing. Los algoritmos no son importantes, ya que la estructura del gráfico está determinada por la lógica comercial. Sería deseable poder agregar etiquetas a los bordes también. Sería óptimo si puedo servir esto como png / svg.

¿Qué biblioteca / servicio recomendarías?

aclaraciones:

1) La pregunta es sobre los gráficos, como el gráfico acíclico dirigido , NO, los gráficos .

2) flot, Google Charts: no se pueden trazar gráficos, solo gráficos, ¿o me he perdido algo?

3) no, no necesito interactividad

4) graphviz sería bueno, pero la biblioteca grappa java está bastante desactualizada y se basa en swing / awt. aunque teóricamente es posible hacer swing a las imágenes, no sería mi forma favorita de hacerlo en una aplicación de servidor.

5) estaría bien usar un servicio en línea donde las imágenes no están alojadas localmente.

editar: enlaces agregados a Wikipedia para aclarar el término gráfico / gráfico




Puedo recomendarlo de todo corazón, ¡excelente!

Vea ejemplos aquí .



¿Qué tal el componente de punto de Graphviz? Produce gráficos (no gráficos), salidas a PNG y SVG, y admite bordes de etiquetado. Puede pagar a punto para generar la imagen que necesita y devolver una etiqueta img que haga referencia a eso. Alternativamente, puede devolver una etiqueta img que haga referencia a una URL que generará el gráfico requerido (o recuperará una copia en caché). Aquí está la información del punto:

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

También puede echar un vistazo a WebDot, que aparentemente está diseñado para este propósito:

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


Puedes usar SVG en combinación con Batik. Lo he usado varias veces para mostrar gráficos. Batik con Java 1.5 es muy rápido. Con esta solución puede programar su gráfica en Java sin dependencia de Swing. Puede agregar etiquetas donde desee, alojarlo como un servlet y mostrarlo como png o svg.

Puede crear los gráficos en SVG (este es un documento XML).
Utiliza Batik para transformar el documento SVG en una imagen PNG / JPG.
Puede usar un servlet para transmitir esta imagen al navegador.

En java construyes un documento SVG (= XML). Las muestras para gráficos SVG se pueden encontrar aquí: Gráfico dirigido y aquí: Gráfico dirigido simple


JFreeChart puede ser la forma en que desea ir, pero hace una distinción entre Gráficos y Gráficos. Quizás puedas explicar a qué te refieres con eso. Usualmente he usado estos términos como sinónimos. :)

JFreeChart tiene buenos gráficos de dispersión, barras y líneas, así como divertidos como Pie y Marcar, así que tal vez funcione para usted.



así que tomé todas las respuestas y enlaces, parece que Prefuse / Flare lo hará con la mejor opción. tienen visalizaciones muy atractivas, además de que han incorporado soporte para gráficos.


JPGD es un analizador Graphviz en Java. Está un poco abandonado, pero el código es bueno y claro, y si encuentras errores, estoy seguro de que el autor aceptaría correcciones aportadas.

Aunque se anuncia como un analizador sintáctico, también es un generador. Puede construir Gráficos como colecciones de objetos Nodo y Borde, luego obtener .dot usando Graph.toString (). Conseguir esto como un gráfico sería un simple depósito al ejecutable Graphviz dot.

Alternativamente, dot es muy fácil de generar tú mismo. En el caso más simple, solo se trata de escribir un encabezado en maceta

digraph myGraph {

... seguido de una definición de borde por borde

node1 -> node2 ;

... seguido por un corsé de cierre

}


Además de esperar semanas para escuchar acerca de Magic Framework que va a resolver todos tus problemas en una línea de código, también existe la otra opción de escribir solo un código para hacer exactamente lo que quieras ... (No estoy diciendo que son 10 minutos de trabajo, pero probablemente sean uno o dos días, y publicaste tu pregunta hace más de dos semanas ...)

¿Has echado un vistazo, por ejemplo, en la entrada de Wikipedia sobre algoritmos basados en Force ? Tiene pseudocódigo y algunos enlaces que pueden ser útiles.

Asumo que el problema es el algoritmo de diseño, y no la cuestión de crear una Imagen Buffered, dibujar en su contexto de gráficos, codificar PNG y enviarla por el socket. Realmente no necesitas un marco para ese bit, no creo.



Puede probar sigma.js: http://sigmajs.org/

Es una biblioteca liviana de código abierto en Javascript para mostrar gráficos grandes en la Web.


Creamos mxGraph para tales requisitos. Realmente lo lanzamos en 2006, pero nos tomó un tiempo darnos cuenta de esta pregunta ...


Para el servidor , pruebe JUNG , puede ejecutarlo contra Batik y producir hermosos archivos SVG o PNG. JUNG tiene un diseño agradable y algoritmos de diseño muy potentes ...

Además, como mencionas que "estaría bien usar un servicio en línea " , graphviz proporciona un servicio llamado webdot para representar gráficos.

También hay otros a lo largo de esta línea ... ej. Http://graph.gafol.net/ (parece estar abajo)

Lado del cliente:

  • Pruebe http://arborjs.org/ para obtener una biblioteca mínima (ish) dedicada al diseño, use esto si prefiere preferir sus propias rutinas de representación (div, canvas, svg, paper.js, procesamiento ... etc.) .

  • También me gusta http://sigmajs.org/ para un enfoque más completo, construir en soporte táctil, complementos, formatos de archivo, etc.


Vea esta pregunta , especialmente la respuesta de Stephan sobre el prefuse. Leí que no necesitas interactividad, pero prefijar aún puede ser útil.