2012-05-12 13 views
11

Piszę program kontroli eksperymentu naukowego w języku Java, który zawiera GUI.Czy JavaFX 2.0 może służyć jako pakiet do tworzenia wykresów naukowych?

Pomagam wybrać bibliotekę wykresów do wykonania tego zadania. Program będzie zawierać dwa rodzaje wykresów:

  1. Wykres liniowy z wieloma punktami danych (w zakresie 10^4-10^5 punktów na wykresie) z prędkością odświeżania około raz 0,5-1 sekundy, więc wydajność jest czynnikiem. Wykres ten będzie musiał obejmować zestawy punktów danych z różnym skalowaniem.

  2. Wykres rozproszenia bez wielu punktów danych, które muszą zawierać paski błędów lub jakiś sposób wskazania błędu w punktach. Najlepiej zarówno na osi X, jak i Y, na przykład w stylu celownika.

Skala logarytmiczna jest również koniecznością, a także dobrym narzędziem do powiększania i eksportu. Wolałbym rozwiązanie dla obu wykresów z pojedynczym pakietem możliwych.

Z przeprowadzonych przeze mnie badań prawie idealną opcją wydaje się być javaFX 2.0. Z tego, co przeczytałem, ma dobrą wydajność i wygląda świetnie, ale nie mogę znaleźć opcji dla pasków błędów. Ponieważ w ogóle nie znam javaFXa, jak łatwo jest rozszerzyć bibliotekę wykresów o paski błędów, czy też istnieje dodatek open source, który obejmuje to, czego nie znalazłem?

Inną opcją jest biblioteka wykresów Google, która wydaje się mieć wszystkie niezbędne funkcje, jednak obawiam się, że częstotliwość odświeżania będzie problemem w pierwszym typie wykresu. Czy jest to uzasadniona troska?

Użyłem JFreeChart, ale jestem zaniepokojony występem, a także bardzo trudno jest dodać małe zmiany. Obejmują one sposób zmiany koloru wykreślanych punktów podczas wykonywania po utworzeniu wykresu, jak to możliwe w programie Matlab. Wszystko to wymaga dużo dodatkowego kodowania i czasu, którego staram się unikać.

Ostatnią opcją, która wydaje się najbardziej praktyczna, jest JChart2D. Wygląda na to, że większość funkcji jest mi potrzebna, a moim jedynym problemem jest to, że nie wygląda to zbyt ładnie.

Czy ktoś ma jakieś rekomendacje dla mnie? Planuję to zakodować w jak najkrótszym czasie, a najgorszym scenariuszem jest dla mnie odkrycie, że błędy w jakimś pakiecie osób trzecich lub że opcja, której potrzebuję, jest niedostępna i wymaga dużo dodatkowego kodu, chociaż byłoby to możliwe. miło nauczyć się czegoś nowego.

Ta decyzja może oczywiście wpłynąć na cały pakiet GUI, którego używam, który obecnie wydaje się być Swingiem.

Dzięki,

Odpowiedz

8

Java FX 2.0 i JFreeChart nie są porównywalne. JFreeChart to biblioteka wykresów dla Swing, która jest środowiskiem graficznym w Javie. Natomiast Java FX 2.0 jest alternatywą dla Swinga. Java FX 2.0 dostarcza kilka obiektów wykresów jako część standardowej biblioteki, ale zdecydowanie nie są tak elastyczne/konfigurowalne jak te dostępne w JFreeChart. Oczywiście, Java FX 2.0 jest w Javie, nic nie stoi na przeszkodzie, aby zakodować bardzo konkretny wykres, którego potrzebujesz, poprzez rozszerzenie dostępnych komponentów.

Java FX 2.0

  • Zalety: bardziej nowoczesny wygląd i czuć niż Swing (osobista opinia subiektywna), prawdopodobnie będzie to nowy standard GUI w Javie w ciągu kilku lat
  • Wady: trzeba będzie poświęcić więcej czasu na wzmocnienie istniejących elementów wykresów, mniej powszechnie stosowany = mniejsze poparcie + mniejszą społeczność, jeśli utkniesz

Swing

  • Zalety: wiele dostępnych bibliotek wykresów (JFreeChart jest bardzo obszerna, ale istnieją alternatywy, o których wspomniałeś). Aktywna i szeroka społeczność.
  • Minusy: Ja osobiście nie lubię tego wyglądu i stylu - na pewnym etapie może stać się przestarzały, ale wyraźnie nie jutro.
+0

Dziękujemy! Myślę, że to była odpowiedź, której szukałem. JavaFX musi być wysoce spersonalizowany, zanim będzie mógł służyć jako naukowa biblioteka wykresów. – user1391091

0

Najlepszy naukowy pakiet wykresów Java jest dostarczany przez The MathWorks. Korzystanie z MATLAB Builder JA umożliwia kodowanie kreślenia, aw razie potrzeby części obliczeniowej w MATLAB i konwertowanie jej na klasy Java.

Jest jedna wada. Kiedy ostatnio użyłem pakietu, nie było możliwości włączenia okna kreślenia do twojej aplikacji. Wykresy są zawsze wyświetlane w osobnym oknie.

Kolejnym niepokojącym problemem jest cena za to rozwiązanie.

matplolib jest najbliższym konkurentem dla MATLAB, ale nie ma jeszcze wdrożenia Jython.

+0

Pierwotnie program, nad którym pracuję, był w Matlab, ale niestety ze względu na spójne błędy "Out of memory" i ogólną wydajność pakietu. Czy wiesz, czy wydajność może być problemem w tym rozwiązaniu? – user1391091

+0

Wyświetlanie ponad 10^5 punktów danych z częstotliwością odświeżania 1 Hz działało bez żadnych problemów z wydajnością. Błędy "braku pamięci" często można rozwiązać, modyfikując ustawienia maszyny JVM. – zellus

4

jest idealny do tych zastosowań. Ponieważ jest open source, łatwo przetestować w kontekście; FastScatterPlot jest omówione here. Zmiana wykresu po jego utworzeniu jest prosta, jak pokazano here; i możliwe są dowolne schematy kolorów, jak pokazano here i here.

+0

Rozważ także pakiety ['org.jfree.chart.fx *'] (http://www.jfree.org/jfreechart/api/javadoc/), które zapewniają obsługę JavaFX dla 'JFreeChart'." – trashgod

1

Można użyć Open Office jako silnik do tworzenia wykresów, istnieje java/UNO most ... JavaFX jest ładny, ale wykresy nie są tak elastyczne jak JFreeChart API rozwiązaniem mogłoby być wykorzystanie JfreeCharts ciągu FX patrick

2

Aby włączyć JFreeChart i Orson Charts (które są oparte na Java2D) do użycia w JavaFX, utworzyłem nowy projekt, który zapewnia interfejs API Graphics2D wspierany przez JavaFX Canvas. Projekt jest FXGraphics2D na GitHub. Może być również użyty do innych bibliotek Java2D (kod znajduje się pod licencją typu BSD).

+0

Dzięki David :-) – jewelsea

Powiązane problemy