Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посоветуйте: swign библиотека построения графиков 
:(
    Опции темы
alexzzz
Дата 4.7.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.7.2008

Репутация: нет
Всего: нет



Доброго дня,

Нужна swing библиотека для построения графиков с возможностью интерактивного взаимодействия с пользователем. Один из самых необходимых моментов - трассировка последовательностей с данными с помощью мыши. Очень желательно чтобы библиотека была бесплатной;)

Поиск привел меня к библиотеке JFreeChart. Но не совсем понятно, позволяет ли она интерактивно взаимодействовать с пользователем.
Нашел пример, где с помощью этой библиотеки генерируется изображение, которое потом выводится на экран с помощью JLabel. Это не совсем то что нужно... 

Может быть есть каки-либо другие варианты использования JFreeChart?? Или может быть для моих задач лучше использовать какую-либо другую библиотеку?

P.S. Написать самостоятельно не предлагать, очень мало времени:(

Заранее спасибо, 
всем кто откликнулсяsmile 
PM MAIL   Вверх
fixxer
Дата 4.7.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

Репутация: 15
Всего: 27



Что значит "трассировка последовательностей с данными"?


--------------------
user posted image
PM MAIL ICQ   Вверх
alexzzz
Дата 4.7.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.7.2008

Репутация: нет
Всего: нет



Трассировка вещь простая smile, 
например:

Есть последовательность данных [X, Y]. Эти данные отображаются в виде двухмерной прямоугольной диаграммы. Пользователь трассирует мышью ось Ox. Алгоритм такой:
1. Определям координату мыщи по оси Ox.
2. Определяем точку из множества Y, соответствующую значению найденному в пункте 1.
3. Показываем значение пользователюsmile


PM MAIL   Вверх
SoulKeeper
Дата 5.7.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 14.1.2007
Где: Ukraine, Lviv.

Репутация: 2
Всего: 15



Пишется за 20 минут такое...

Смотреть в сторону MouseMotionListener

Это сообщение отредактировал(а) SoulKeeper - 5.7.2008, 12:26
PM MAIL   Вверх
alexzzz
Дата 5.7.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.7.2008

Репутация: нет
Всего: нет



Я знаю, что это пишется за 20 минут. У меня на Qt есть самописная библиотека для построения разнообразных графиков, вопрос совсем не в том, как это сделать.

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

В JFreeChart есть stand-alone компонент "диаграмма"? У которого можно переопределить события мыши, который можно отобразить в на какой-нибудь панели, который можно порастягивать, зуммировать?

Это сообщение отредактировал(а) alexzzz - 5.7.2008, 15:55
PM MAIL   Вверх
Animator
Дата 5.7.2008, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.5.2007

Репутация: нет
Всего: 0



В SwingX есть для этого компонент JXGraph. Насчёт трассировки не знаю. Но сам компонент справляется со своей задачей на ура и выглядет здорово.
PM MAIL ICQ   Вверх
alexzzz
Дата 5.7.2008, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.7.2008

Репутация: нет
Всего: нет



Animator, 

Спасибо большое за наводку, уже копаюsmile Надеюсь подойдет...


P.S. А вообще, интересно, есть востребованность в библиотеках для построения различного рода диаграмм, графиков, вычисления статистики? Подумываю о том, чтобы портировать свою Qt-шную библиотеку в Swing, когда время свободное появится... Но вот не знаю пока, стоит ли этим заниматьсяsmile
PM MAIL   Вверх
Animator
Дата 6.7.2008, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.5.2007

Репутация: нет
Всего: 0



alexzzz, 
да востребованость есть. На сайтах часто попадаются апплеты для 
вычисления статистики, есть даже довольно сложные. 
Но на java такие штуки пишутся спокойно с нуля без дополнительных компонентов.
Незнаю, может у вас есть действительно что-то стоящее.

PM MAIL ICQ   Вверх
alexzzz
Дата 6.7.2008, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.7.2008

Репутация: нет
Всего: нет



JXGraph вцелом неплохая библиотечка, но она слишком малофункциональная. Насколько я понял, с помощью неё можно строить только функции заданные аналитически. 




PM MAIL   Вверх
Animator
Дата 6.7.2008, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.5.2007

Репутация: нет
Всего: 0



alexzzz, ну вообше-то JXGraph не библиотечка, а компонент пользовательского интерфейса из пакета SwingX
Являющийся кстати и javaBean, вследствии чего отлично контактирует с IDE.
Вот код для отрисовки графика. Что может быть проще smile 
Код

package alltest;

import java.awt.Color;
import javax.swing.*;
import org.jdesktop.swingx.JXGraph;


public class Main extends JFrame {

    public Main() {
    
        JXGraph graph = new JXGraph();
        graph.addPlots(Color.RED, new JXGraph.Plot() {

            public double compute(double value) {
                return Math.tan(value);
            }
        });
        add(graph);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args) {
        new Main();
    }
}


Здесь исходник самого компонента.
Трассировку в компоненте я не нашёл. Но её несложно дописать ручками.
Цитата

JXGraph вцелом неплохая библиотечка, но она слишком малофункциональная. Насколько я понял, с помощью неё можно строить только функции заданные аналитически. 
 

Требуется ещё и на основании таблицы значений? 
PM MAIL ICQ   Вверх
alexzzz
Дата 7.7.2008, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 4.7.2008

Репутация: нет
Всего: нет



Animator, 

Спасибоsmile

Цитата(Animator @  6.7.2008,  21:37 Найти цитируемый пост)
ну вообше-то JXGraph не библиотечка, а компонент пользовательского интерфейса из пакета SwingX Являющийся кстати и javaBean, вследствии чего отлично контактирует с IDE.

Да. Я в Java пришел из C++, поэтому все еще использую привычную терминологию. 

Цитата(Animator @  6.7.2008,  21:37 Найти цитируемый пост)
Требуется ещё и на основании таблицы значений? 

Ну вобщем-то это и нужноsmile Исходные данные ведь хранятся в БД. Как раз и получается табличное задание функцииsmile

Я, кстати говоря, вновь вернулся к JFreeChart. Там оказывается есть компонент, для отображения графиков. Не знаю, как я его раньше не увидел. Все довольно просто оказалось. Что-то в таком духе:

Код

            XYSeries series = new XYSeries("blablabla");
            for (MyProtocolDataRow dataRow : dataList) {
                series.add(dataRow.getXValue(), dataRow.getYValue());
            }
            XYDataset xyDataset = new XYSeriesCollection(series);
            JFreeChart chart = ChartFactory.
                    createXYLineChart("chart name",
                            "x label", "y label", xyDataset, PlotOrientation.VERTICAL,
                            true, true, false);


            ChartPanel chartPane = new ChartPanel(chart);
            JDialog graphDialog = new JDialog();
            graphDialog.add(graphPane);



Осталось прикрутить трассировку и все будет окsmile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0653 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.