Построение точек в Java с взаимодействием - PullRequest
3 голосов
/ 19 апреля 2010

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

Обработка выглядит великолепно для того, что я хочу, но я не хочу делать все с нуля. Есть ли лучшее решение?

Заранее спасибо.

Редактировать: Есть около 2k очков.

Ответы [ 3 ]

2 голосов
/ 19 апреля 2010

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

Я отображал матрицы точек, которые менялись во времени (при поступлении новых данных) с временем обновления 1 секунда (поэтому перерисовывается каждая секунда графика).

Для матрицы 256 x 256 все нормально на обычном компьютере пользователя. Если матрица составляет ~ 350 баллов, она становится грубой (пользователь видит лаги в графическом интерфейсе), но ее можно использовать, если матрица размером 1024 x 1024 непригодна для использования.

Я делал рисование диаграмм в формате EDT, но все же, даже если бы взял его в другой поток - рендеринг все равно потреблял бы мощность процессора.

Так что в зависимости от размера набора данных --- вы можете использовать JFreeChart.

2 голосов
/ 19 апреля 2010

Я не нашел хорошую библиотеку, которая бы хорошо работала с большими наборами данных.

Когда вы говорите "большой", что вы имеете в виду?1k, 100k или 1 миллион очков?

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

1 голос
/ 19 апреля 2010

Этот пример легко обрабатывает тысячи узлов.

GraphPanel() {
    ...
    Random rnd = new Random();
    for (int i = 0; i < 2000; i++) {
        Point p = new Point(rnd.nextInt(WIDE), rnd.nextInt(HIGH));
        nodes.add(new Node(p, 4, Color.blue, kind));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...