Существуют ли какие-нибудь достойные бесплатные библиотеки для построения графиков данных Java?

В недавнем проекте Java нам потребовалась бесплатная утилита для построения графиков данных в реальном времени на основе Java. После долгих поисков мы нашли этот инструмент под названием Scientific Graphics Toolkit или SGT от NOAA. Он казался довольно надежным, но мы обнаружили, что его нельзя сильно настраивать. Или, по крайней мере, недостаточно настраиваемый, чтобы удовлетворить наши потребности. Мы закончили тем, что очень глубоко погрузились в код Java, переконструировали код и полностью изменили его, чтобы инструмент построения графика выглядел и действовал так, как мы хотели, чтобы он выглядел и действовал. Конечно, это убило все шансы на будущие обновления от NOAA.

Итак, какие бесплатные или дешевые инструменты или библиотеки для построения графиков данных на основе Java вы используете?

Followup: Спасибо за JFreeChart предложений. Я проверил их веб-сайт, и он выглядит как очень хорошая утилита для построения графиков и построения графиков данных. В своем первоначальном вопросе я должен был пояснить, что я специально искал данные для построения графиков в реальном времени. Я исправил свой вопрос выше, чтобы прояснить этот момент. Однако похоже, что поддержка JFreeChart для живых данных в лучшем случае незначительна . Есть другие предложения?

Ответов (16)

Решение

Я успешно использовал JFreeChart в нескольких проектах. Это очень настраиваемый. JFreeChart имеет открытый исходный код, но они берут плату за руководство разработчика . Если вы делаете что-то простое, пример кода, вероятно, будет достаточно хорош. В противном случае 50 долларов за руководство разработчика - довольно хорошая сделка.

Что касается данных «в реальном времени», я также использовал JFreeChart для такого рода приложений. К сожалению, мне пришлось создать несколько пользовательских моделей данных с соответствующими механизмами синхронизации, чтобы избежать состояния гонки. Однако это было не так уж сложно, и JFreeChart все равно был бы моим первым выбором. Однако, как следует из часто задаваемых вопросов, JFreeChart может не дать вам наилучшей производительности, если это вызывает большую озабоченность.

Проверьте JView в ILOG - в них много чего, и что-то может соответствовать вашим потребностям. Все они очень настраиваемые и довольно быстрые. Но не бесплатно.

JHandles - это альтернативный графический пакет для Octave (математический пакет). Вероятно, стоит изучить, но специфичность Octave может не иметь того, что вам нужно.

-Адам

Для построения графиков в реальном времени вы можете использовать QN Plot, JOpenChart или его форк Openchart2.

Я нашел этот вопрос, когда искал в Google библиотеки построения графиков с открытым исходным кодом для java. Я был не совсем доволен ответами, размещенными здесь, поэтому я провел дополнительное исследование по этой проблеме. Хотя этот вопрос был задан еще в 2008 году, он все же может быть кому-то интересен.

Вот список инструментов для построения диаграмм и отчетов с открытым исходным кодом на Java.

http://autoplot.org/ позволяет обновлять данные в режиме реального времени и может использоваться для создания многих типов научных графиков.

Чтобы обновить график, укажите URL-адрес файла данных, а затем добавьте &filePollUpdates=1&tail=100 . См. Пример на http://autoplot.org/cookbook#Loading_Data

Написанная мной библиотека Plot4j также поддерживает построение графиков в реальном времени.

PtPlot может быть хорошим выбором. Раньше назывался Птолемеем.

jcckit может обрабатывать графики в реальном времени. Хотя это медведь.

Я раздвоил его и сделал вокруг него очень простую оболочку для построения графиков не в реальном времени. Базовый сложный интерфейс также можно использовать напрямую.

https://bitbucket.org/hughperkins/easyjcckit

Waterloo Scientific Graphics - это новый проект LGPL. Объекты данных наблюдаемы и могут обновляться в сценарии построения графика в реальном времени. Подробнее см. http://waterloo.sourceforge.net/

Несколько скриншотов:

http://waterloo.sourceforge.net/images/AnatomyZ.png

http://waterloo.sourceforge.net/images/contour.png

http://waterloo.sourceforge.net/images/errorbar.png

Я использовал JFreeChart в довольно сложном приложении, которое требовало визуализации потоков данных и вычислений на основе данных. Мы реализовали возможность визуального редактирования графиков данных с помощью мыши и получили очень большой набор точек данных. JFreeChart справился с этим очень хорошо.

К сожалению, я застрял на версии 0.7, но последняя версия намного лучше, когда дело касается ясности API. Сообщество очень полезно, и разработчики тоже отвечают на письма.

Если вы создаете веб-приложение и не хотите возиться с библиотеками, вы можете проверить Google Chart API . Сам не использовал, но запустил несколько многообещающих тестов.

Я использовал JFreeChart ( http://www.jfree.org/jfreechart/ ) в предыдущем проекте. Он имеет несколько очень хороших встроенных возможностей, а дизайн был ПУТЬ расширяемым, так что вы всегда могли развернуть собственное расширение позже, если вам потребовались какие-то настраиваемые аннотации к диаграмме или вы хотели, чтобы ось отображалась по-другому, или что-то еще. Это определенно стоит проверить.

Live Graph поддерживает рендеринг в реальном времени.

Я только что столкнулся с аналогичной проблемой (отображение быстро обновляемых данных для инженерных целей), и я использую JChart2D . Он довольно минималистичен и имеет несколько причуд, но кажется довольно быстрым: я провожу тест скорости, в котором он добавляет 2331 точку в секунду (333x7 кривых) в ленточную диаграмму и использует 1% ЦП на моем Pentium 4 с тактовой частотой 3 ГГц.

Возможно, вы захотите проверить JMathPlot

Я использую GRAL для построения графиков в реальном времени. Это библиотека Java LGPL. Хотя он не такой мощный, как JFreeChart, у него более приятный API. Я получил участок за очень короткое время. Они также поставляют пример построения графика в реальном времени.