2015-08-22 30 views
6

Czy clojure ma jakieś biblioteki do pokazywania dynamicznych wykresów/wykresów, coś tak prostego jak na przykład oscylująca fala sinusoidalna?Interactve i dynamiczne wykresy/wykresy w clojure

Sprawdzono bibliotekę inkantera, ale wydaje się, że zapewnia ona jedynie wydruki statyczne.

+1

jak wspomniano poniżej, jest quil. istnieje również moduł przetwarzania incanter.processing. ale tak czy inaczej wszystkie drogi prowadzą do Przetwarzania :) – lispHK01

+1

Cóż ... to kwestia osobistych preferencji. Próbowałem Quil i nie lubiłem pracować nad modelem Processing.Zamiast tego używałeś d3.js. który ma własne wyzwania - nie zamierzam kłamać - ale jest bardziej zorientowany na dane. Jednak model przetwarzania Incantera to niezły pomysł. – Mars

Odpowiedz

4

Naprawdę nie jest to biblioteka kreślarska, ale można użyć interfejsu quil do biblioteki Java Processing.

Jeśli chcesz używać Clojurescript, proponuję przejrzeć bibliotekę d3.js i strokes, aby użyć jej z Clojurescript. Wymaga to jednak dziwacznej metodologii d3.js i będzie wymagało sporo myślenia w kategoriach HTML, DOM, CSS i JavaScript, nawet jeśli napiszesz większość kodu w Clojure. [EDIT: Teraz myślę, że prostsze jest używanie d3.js bezpośrednio z Clojurescript; obrysy zapewniają niewielką korzyść. Istnieje również kilka bibliotek wykresów Clojurescript zbudowanych na d3.js. Znalazłem na przykład NVD3.]

Istnieje również biblioteka Clojurescript C2, zaprojektowana do implementacji niektórych funkcji d3.js, ale nie pozwala na dynamiczne kreślenie, ale można dodać funkcje dynamiczne używając niestandardowego CSS. (C2 naprawdę nie rośnie, AFAIK, ale jest aktywnie utrzymywany.)

Inną opcją, która może być łatwiejsza (lub nie), byłoby użycie biblioteki Java, która robi to, co chcesz. Bez wątpienia jest ich kilka, w tym JFreeChart. Może to również wymagać nieco myślenia w stylu Java, ucząc się interakcji Clojure-Java (która od łatwych do brzydkich, mylących i gadatliwych, w zależności od struktury biblioteki Java).

Niezależnie od tego, ile jest warta, istnieją biblioteki do łączenia Javy z R, która ma bardzo dobre możliwości kreślenia poprzez wbudowane kreślenie, bibliotekę ggplot2 i bibliotekę kratownicową. Więc teoretycznie, możesz użyć Clojure do sterowania Javą, aby sterować R, co może nie być tego warte. Zobacz this question dla bibliotek Java-to-R.

Powinieneś również zapytać w grupie Incanter Google. Być może są jakieś ukryte sztuczki lub coś w rozwoju, które zrobi to, co chcesz.

EDYCJA: Incanter zapewnia coś o nazwie "dynamic plots". Nie dokładnie to, co chcesz, myślę: Są to wykresy, które mają parametry dołączone do suwaków, dzięki czemu można zobaczyć zmianę działki w czasie. Niemniej jednak fakt, że może to zrobić Incanter sugeruje, że utworzenie wykresu, który dynamicznie zmienia się w odpowiedzi na zmiany danych, może nie być tak trudne.

ONE MORE EDIT: Ponieważ JFreeChart jest co Incanter używa do rysowania wykresów i JFreeChart jest biblioteką Java, który jest zdolny do generowania dynamicznych wykresów, opcją jest użycie metody Java na obiektach wykresu że Incanter produkuje, jak this answer sugeruje .

(EDIT: Poszukiwanie "Clojure JFreeChart" pojawia się kilka bibliotek i tutoriale powinny pomóc przy jednokrotnym użyciu JFreeChart z Clojure).

Anndd ... jeden EDIT: https://github.com/liebke/apogee wygląda to może być dokładnie czego chcesz, jyriand. (Interesują mnie powiązane pytania i wciąż dostrzegam nowe potencjalne odpowiedzi na to.)

+0

Incanter wygląda obiecująco. – boring