Scatter Plot 3D per applicazione Web
-
05-07-2019 - |
Domanda
Sto cercando un componente Scatter Plot 3D per un'applicazione Web. In questo momento sto usando JMathPlot (all'interno di un'applet Java) per produrre qualcosa del genere:
alt text http://jmathtools.berlios.de /lib/exe/fetch.php?media=scatterplot3d.png
JMathPlot va bene, ma manca alcune funzionalità richieste (sono particolarmente interessato ad avere suggerimenti per i punti della trama).
Ci sono alternative? Qualsiasi tecnologia web interattiva (javascript, applet java, flash, silverlight) va bene. L'utente dovrebbe essere in grado di ruotare / ingrandire la trama e vedere le descrizioni dei comandi, quando si passa il mouse sopra un punto.
Soluzione
Esistono diversi semplici motori 3D per entrambi Silverlight (ad es. http://www.markdawson.org/ Kit3D / o http://www.codeplex.com/aXelerateSL3D ) e flash ( elenca qui ) dato che conosci ActionScript, VB.NET o C #, dovrebbe essere facile creare un grafico del genere da solo.
La versione 10 di flash ha anche un costruito in un semplice motore 3d " :
Flash Player 10 consente la traduzione di xyz e rotazione xyz di superfici 2D sul assi x, ye z. Anche Flash Player 10 visualizza la prospettiva e la fotocamera angoli impostati per creare simil-3D effetti.
Questo è probabilmente tutto ciò che serve per costruirlo rapidamente da soli.
Poiché JMathPlot è open source, adottarlo per le tue esigenze potrebbe essere un'altra opzione.
Altri suggerimenti
Potresti anche voler esaminare Elaborazione . Potrebbero non avere componenti già pronti, ma ci sono migliaia di buoni esempi di codice sorgente sul web.
Suggerimento di James Black per utilizzare il tag canvas, è molto buono, ma richiede un browser non aggiornato con IE. O lo fa? Grazie a google, potrai utilizzare Chrome Renderer in IE . In questo modo indirizzeresti i browser abilitati per HTML5 (Gecko, Webkit e Presto) con i tuoi grafici dinamici e chiederesti agli utenti di IE di installare il componente aggiuntivo di Google una volta uscito. canvas
funziona su più browser grazie al supporto nativo in tutto ciò che non è IE e al Esplora Canvas plugin per IE. Il supporto SVG
è disponibile anche tra browser grazie a alcuni plugin per IE . Nota che se hai bisogno di Chrome Renderer per IE, non hai bisogno di nient'altro.
Puoi usare canvas
o svg
per fare i grafici e ce ne sono già alcuni biblioteche per farlo . Entrambe le tecnologie ti consentono di creare grafici dinamici , ma hanno alcuni approcci diversi.
SVG canvas ------------------------------------------------------------------------------- Has scene DOM (SVG DOM, though) Single HTML element, rendering script-driven Deals in shapes Deals in pixels Somewhat hard to mix with HTML (not XHTML) Behaves like an image in both Event handling easy Event handling hard
Penso che andrei con SVG
per fare quello che vuoi, dato che sarà semplicissimo aggiungere etichette dinamiche ad esso, ma sarà difficile creare un sistema veramente flessibile API per grafici a dispersione 3D pseudo.
Il problema con svg
è che tentando di creare un linguaggio molto flessibile, ne hai uno molto complesso. Qui puoi vedere il codice scritto in entrambe le librerie che fanno la stessa cosa.
SVG
var rect = document.createElementNS(SVG_NS, "rect");
rect.setAttribute("x", "5");
rect.setAttribute("y", "5");
rect.setAttribute("width", "20");
rect.setAttribute("height", "20");
rect.setAttribute("fill", "red");
parent.appendChild(rect);
var poly = document.createElementNS(SVG_NS, "polygon");
poly.setAttribute("fill", "green");
poly.setAttribute("points", "-40,40 0,-40, 40,40");
parent.appendChild(poly);
Canvas
with (ctx) {
fillStyle = "red";
fillRect(5, 5, 20, 20);
}
with (ctx) {
fillStyle = "green";
beginPath();
moveTo(-40, 40);
moveTo(0, -40);
moveTo(40, 40);
closePath();
fill();
}
FlashAndMath ha alcune librerie interessanti per questo genere di cose:
Potresti guardare semplicemente facendo questo con il tag canvas, e per qualsiasi browser aggiornato, ad eccezione di IE, potresti ottenere suggerimenti, poiché ha eventi proprio come qualsiasi altro tag html.
Puoi ottenere la maggior parte delle funzionalità su IE usando excanvas, non ho avuto fortuna nel disegnare del testo.
Non è una libreria, ma ti fornirebbe la possibilità di lavorare solo in html con javascript.
Il grafico a dispersione 3d di canvasXpress offre un'alternativa JavaScript e Canvas. http://canvasxpress.org/scatter3d.html