2012-05-12 24 views
11

Tôi đang viết một chương trình kiểm soát thử nghiệm khoa học trong java bao gồm GUI.JavaFX 2.0 có thể phục vụ như một gói biểu đồ khoa học không?

Tôi giúp chọn thư viện biểu đồ cho tác vụ này. Chương trình sẽ bao gồm hai loại biểu đồ:

  1. Một biểu đồ phù hợp với rất nhiều điểm dữ liệu (trong khoảng 10^4-10^5 điểm cho mỗi lô) với một tốc độ làm tươi khoảng một lần mỗi 0,5-1 giây, vì vậy hiệu suất là một yếu tố. Biểu đồ này sẽ phải bao gồm các tập hợp các điểm dữ liệu với tỷ lệ khác nhau.

  2. Biểu đồ phân tán không có nhiều điểm dữ liệu phải bao gồm các thanh lỗi hoặc một số cách chỉ ra lỗi trong các điểm. Tốt nhất là cả trên trục X và Y, ví dụ như kiểu crosshair.

Quy mô lôgarit cũng là công cụ thu phóng và công cụ thu phóng tốt cũng phải tốt. Tôi muốn một giải pháp cho cả hai biểu đồ với một gói duy nhất có thể.

Từ nghiên cứu, tôi đã thực hiện một tùy chọn gần như hoàn hảo có vẻ là javaFX 2.0. Từ những gì tôi đọc, nó có hiệu suất tốt và cũng có vẻ tuyệt vời, nhưng tôi dường như không thể tìm thấy một tùy chọn cho các thanh lỗi. Vì tôi không biết javaFX chút nào, đơn giản như thế nào để mở rộng thư viện biểu đồ để bao gồm các thanh lỗi, hoặc là có một nguồn mở thêm vào bao gồm điều này mà tôi không tìm thấy?

Một tùy chọn khác là thư viện biểu đồ của Google, có vẻ như có tất cả các tính năng cần thiết, tuy nhiên tôi sợ rằng tốc độ làm mới sẽ là vấn đề trong loại biểu đồ đầu tiên. Đây có phải là mối quan tâm khả thi không?

Tôi đã sử dụng JFreeChart, nhưng tôi lo ngại về hiệu suất và cũng thấy rất khó để thêm các thay đổi nhỏ. Chúng bao gồm một cách để thay đổi màu sắc của các điểm vẽ trong thời gian chạy sau khi biểu đồ đã được tạo ra là có thể trong MATLAB. Tất cả điều này đòi hỏi rất nhiều mã hóa thêm và thời gian tiêu thụ mà tôi đang cố gắng tránh.

Tùy chọn cuối cùng có vẻ thực tế nhất là JChart2D. Nó dường như có hầu hết các chức năng tôi cần và vấn đề duy nhất của tôi với nó là nó trông không đẹp lắm.

Có ai có bất kỳ đề xuất nào cho tôi không? Tôi dự định viết mã này trong một thời gian ngắn nhất có thể, và trường hợp xấu nhất là để tôi phát hiện ra lỗi trong một số gói bên thứ ba hoặc tùy chọn tôi cần không có sẵn và yêu cầu nhiều mã bổ sung, mặc dù tốt đẹp để học một cái gì đó mới.

Quyết định này dĩ nhiên có thể ảnh hưởng đến toàn bộ gói GUI mà tôi chọn sử dụng, hiện có vẻ là Swing.

Cảm ơn,

Trả lời

8

Java FX 2.0 và JFreeChart không thực sự so sánh được. JFreeChart là một thư viện biểu đồ cho Swing, là một môi trường GUI trong Java. Trong khi Java FX 2.0 là một thay thế cho Swing. Java FX 2.0 xảy ra để cung cấp một vài đối tượng biểu đồ như là một phần của thư viện chuẩn của nó, nhưng chúng chắc chắn không linh hoạt/tùy biến như những gì có sẵn trong JFreeChart. Tất nhiên, Java FX 2.0 đang ở trong Java, không có gì ngăn cản bạn mã hóa biểu đồ rất cụ thể mà bạn cần bằng cách mở rộng các thành phần có sẵn.

Java FX 2,0

  • Ưu điểm: nhìn hiện đại hơn và cảm nhận so với Swing (ý kiến ​​chủ quan cá nhân), có thể sẽ trở thành tiêu chuẩn GUI mới trong Java trong một vài năm
  • Nhược điểm: bạn sẽ có dành nhiều thời gian tăng cường các thành phần biểu đồ hiện có, sử dụng ít rộng rãi = ít hỗ trợ + cộng đồng nhỏ hơn nếu bạn gặp khó khăn

Swing:

  • Ưu điểm: nhiều thư viện biểu đồ có sẵn (JFreeChart là một thư viện rất toàn diện nhưng có các lựa chọn thay thế khi bạn đề cập đến). Cộng đồng năng động và rộng khắp.
  • Nhược điểm: Cá nhân tôi không thích giao diện nhiều hơn - có thể trở nên lỗi thời ở một số giai đoạn, nhưng rõ ràng không phải ngày mai.
+0

Cảm ơn bạn! Tôi nghĩ đây là câu trả lời tôi đang tìm kiếm. JavaFX cần phải được tùy biến cao trước khi nó có thể phục vụ như một thư viện biểu đồ khoa học. – user1391091

0

Gói biểu đồ Java khoa học tốt nhất được cung cấp bởi MathWorks. Sử dụng MATLAB Builder JA cho phép bạn mã hóa âm mưu và nếu cần phần tính toán trong MATLAB và chuyển đổi nó thành các lớp Java.

Có một hạn chế. Lần cuối cùng tôi sử dụng gói, không có tùy chọn để bao gồm cửa sổ vẽ trong ứng dụng của bạn. Các ô luôn được hiển thị trong một cửa sổ riêng biệt.

Một điểm đáng quan tâm khác là giá cho giải pháp này.

matplolib là đối thủ cạnh tranh gần nhất với MATLAB, nhưng không có triển khai Jython cho đến thời điểm này.

+0

Ban đầu chương trình tôi đang làm việc ở Matlab, nhưng không may là do lỗi "hết bộ nhớ" nhất quán và hiệu suất gói chung. Bạn có biết liệu hiệu suất có thể là một vấn đề trong giải pháp này không? – user1391091

+0

Hiển thị hơn 10^5 điểm dữ liệu với tỷ lệ làm mới 1Hz đã hoạt động mà không có bất kỳ vấn đề về hiệu suất nào. Lỗi "hết bộ nhớ" thường có thể được giải quyết bằng cách tinh chỉnh cài đặt JVM. – zellus

4

JFreeChart lý tưởng cho những mục đích sử dụng này. Bởi vì nó là mã nguồn mở, thật dễ dàng để kiểm tra trong ngữ cảnh; FastScatterPlot được thảo luận here. Thay đổi một âm mưu sau khi nó được tạo ra là đơn giản, như được hiển thị here; và các sơ đồ màu tùy ý có thể, như được hiển thị herehere.

+0

Cũng xem xét các gói ['org.jfree.chart.fx *'] (http://www.jfree.org/jfreechart/api/javadoc/) "cung cấp hỗ trợ JavaFX cho' JFreeChart'. " – trashgod

1

Bạn có thể sử dụng Open Office như một công cụ biểu đồ, có một java/UNO cầu ... JavaFX là tốt đẹp, nhưng bảng xếp hạng là không linh động như JFreeChart API một giải pháp có thể được sử dụng trong vòng JfreeCharts FX patrick

2

Để bật JFreeChartOrson Charts (dựa trên Java2D) được sử dụng trong JavaFX, tôi đã tạo một dự án mới cung cấp API Graphics2D được hỗ trợ bởi Canvas JavaFX. Dự án là FXGraphics2D trên GitHub. Nó cũng có thể được sử dụng cho các thư viện Java2D khác (mã theo giấy phép kiểu BSD).

+0

Cảm ơn David :-) – jewelsea

Các vấn đề liên quan