2015-08-22 14 views
6

Il clojure dispone di librerie per la visualizzazione di grafici/diagrammi dinamici, ad esempio una semplice onda sinusoidale oscillante?Diagrammi interattivi e dinamici/grafici nel clojure

Guardato alla libreria di incanter, ma sembra fornire solo grafici statici.

+1

come indicato di seguito, c'è il quil. inoltre, c'è anche un modulo incanter.processing là fuori. ma in un modo o nell'altro, tutte le strade portano a Processing :) – lispHK01

+1

Beh ..., è una questione di preferenze personali. Ho provato Quil e non mi piaceva lavorare con il modello Processing.Iniziato invece con d3.js. che ha le sue sfide - non ho intenzione di mentire - ma è più orientato ai dati. Tuttavia, un modello di elaborazione Incanter è una buona idea. – Mars

risposta

4

Non proprio una libreria di stampa, ma è possibile utilizzare l'interfaccia quil nella libreria Java Processing.

Se si è disposti a utilizzare Clojurescript, suggerirei di guardare d3.js e la libreria strokes per utilizzarlo da Clojurescript. Tuttavia, ciò richiede l'apprendimento della metodologia stravagante di d3.js e richiederà un bel po 'di riflessione in termini di HTML, DOM, CSS e Javascript anche se si scrive la maggior parte del codice in Clojure. [EDIT: ora penso che sia più semplice usare d3.js direttamente da Clojurescript; i colpi forniscono poco beneficio. Ci sono anche alcune librerie di diagrammi Clojurescript costruite su d3.js. Ho trovato utile NVD3, per esempio.]

C'è anche una libreria Clojurescript C2, progettata per implementare alcune delle funzionalità di d3.js, ma non consente il tracciamento dinamico, sebbene sia possibile aggiungere funzionalità dinamiche usando CSS personalizzati. (C2 non sta davvero crescendo, AFAIK, ma è mantenuto attivamente.)

Un'altra opzione, che potrebbe effettivamente essere più semplice (o meno) sarebbe quella di utilizzare una libreria Java che fa quello che vuoi. Senza dubbio ce ne sono diversi, tra cui JFreeChart. Ciò potrebbe richiedere anche un po 'di pensiero in stile Java, l'apprendimento dell'interopzione Clojure-Java (che va da banalmente facile a brutto, confuso e prolisso, a seconda di come è strutturata la libreria Java).

Per quello che vale, ci sono librerie per l'interfacciamento di Java con R, che ha funzionalità di plottaggio molto piacevoli attraverso il suo plotting integrato, la libreria ggplot2 e la libreria reticolare. Quindi, in teoria, potresti usare Clojure per controllare Java per controllare R, che potrebbe non valerne la pena. Vedi this question per le librerie Java-to-R.

Si dovrebbe anche chiedere sul gruppo Google Incanter. Forse ci sono alcuni trucchi nascosti, o qualcosa in fase di sviluppo che farà ciò che vuoi.

MODIFICA: l'incanter fornisce qualcosa chiamato "dynamic plots". Non esattamente quello che vuoi, penso: questi sono i grafici che hanno parametri collegati ai cursori in modo che tu possa vedere il cambiamento della trama nel tempo. Tuttavia, il fatto che Incanter possa fare ciò suggerisce che potrebbe non essere così difficile creare un grafico che cambia dinamicamente in risposta ai cambiamenti nei dati.

ONE MORE EDIT: Dal momento che JFreeChart è quello che utilizza Incanter per disegnare grafici e JFreeChart è una libreria Java che è in grado di generare grafici dinamici, una possibilità è quella di utilizzare metodi Java sugli oggetti di grafico che Incanter produce, come suggerisce this answer .

(EDIT: La ricerca di "clojure jfreechart" salta fuori un paio di librerie e tutorial destinati ad aiutare un uso JFreeChart con Clojure.)

Anndd ... un altro EDIT: https://github.com/liebke/apogee sembra che potrebbe essere esattamente quello che volevi, jyriand. (Sono interessato a domande correlate e continuo a notare nuove potenziali risposte a questo.)

+0

L'incanter sembra promettente. – boring