Сведения о вопросе

PIRLO

16:10, 12th August, 2020

Теги

java   eclipse   charts   swt    

Библиотеки для красивых диаграмм в SWT?

Просмотров: 477   Ответов: 11

Я знаю следующие библиотеки для рисования диаграмм в приложении SWT/Eclipse RCP:

Какие еще библиотеки существуют для рисования красивых диаграмм с SWT? Или графики в Java вообще? В конце концов, вы всегда можете отобразить изображение...



  Сведения об ответе

PAGE

04:20, 27th August, 2020

Я не использовал BIRT или JGraph, однако я использую JFreeChart в своем приложении SWT. Я нашел лучший способ использовать JFreeChart в SWT, сделав композитный кадр AWT и используя функциональность AWT для JFreeChart. Это можно сделать, создав композитное изображение

Composite comp = new Composite(parent, SWT.NONE | SWT.EMBEDDED);
Frame frame = SWT_AWT.new_Frame(comp);
JFreeChart chart = createChart();
ChartPanel chartPanel = new ChartPanel(chart);
frame.add(chartPanel);

Существует несколько проблем в отношении реализаций на разных платформах, а также код SWT в нем очень плох (в свою защиту г-н Гилберт не знает хорошо SWT, и он сделан для AWT). Мои две самые большие проблемы заключаются в том, что AWT событий пузырятся через SWT есть некоторые ошибочные события, запущенные и из-за обертывания кадра AWT JFreeChart становится значительно медленнее.

@zvikico

Идея поместить диаграмму на веб-страницу, вероятно, не самый лучший способ пойти. Есть несколько проблем, во-первых, как Eclipse обрабатывает интеграцию веб-браузера на разных платформах непоследовательно. Также из моего понимания нескольких пакетов graphing для интернета они являются серверной стороной, требующей установки, также многие компании, включая мои, используют прокси-серверы, и иногда это создает проблемы с веб-браузером Eclipse.


  Сведения об ответе

lesha

12:52, 20th August, 2020

SWTChart дает хорошие результаты для линейных, точечных, столбчатых и площадных диаграмм. The API-это прямой путь, и на веб-сайте есть множество примеров. Я перешел от поиска его в google к просмотру своих данных менее чем за час.

SWTChart


  Сведения об ответе

ITSME

00:55, 23rd August, 2020

Вам может понравиться и это тоже

Он имеет возможность строить графики данных в реальном времени с вашим собственным поставщиком данных.

enter image description here


  Сведения об ответе

ITSME

02:34, 28th August, 2020

Те, что я использовал, - это JChart2D и JFreeChart. Летом я сделал приложение для живого плоттера и использовал для этого JFreeChart. Парень, который начал проект, использовал JChart2D, но я обнаружил, что у него недостаточно возможностей для настройки внешнего вида диаграммы.

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

Там же довольно большой список картографических библиотек на java2s.com


  Сведения об ответе

lats

14:21, 10th August, 2020

Я также искал библиотеку диаграмм для приложения Eclipse RCP, наткнулся на сообщение Калеба здесь и определенно могу рекомендовать SWTChart сейчас сам. Это намного быстрее, чем JFreeChart для меня, плюс легко расширяемый. Если бы мне действительно пришлось жаловаться на что-то, я бы сказал, что javadoc может быть немного более многословным, но это просто говорит о том, что все остальное отлично.


  Сведения об ответе

DO__IT

07:13, 10th August, 2020

Я предлагаю вам попробовать jzy3d, простую библиотеку java для построения данных 3d. Это для java, на AWT, Swing или SWT.


  Сведения об ответе

PROGA

23:23, 22nd August, 2020

Есть также диаграммы ILOG JViews , которые выглядят довольно полнофункциональными... если вы можете себе это позволить. Вот некоторые дополнительные сведения об использовании его с eclipse.


  Сведения об ответе

PROGA

18:36, 13th August, 2020

После оценки нескольких вариантов я решил использовать библиотеку JavaScript для отображения графиков в моем плагине Eclipse. Как уже предлагал zvikico, можно показать страницу html в браузере. На странице html вы можете использовать одну из библиотек JavaScript для выполнения фактического построения графика. Если вы используете Chartist, вы можете сохранить изображение в виде файла SVG из контекстного меню.

Некоторые библиотеки диаграмм JavaScript:

Пример изображения чартиста :

enter image description here

Пример кода java :

package org.treez.results.chartist;

import java.net.URL;

import javafx.application.Application;
import javafx.concurrent.Worker;
import javafx.geometry.HPos;
import javafx.geometry.VPos;
import javafx.scene.Scene;
import javafx.scene.layout.Region;
import javafx.scene.paint.Color;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import netscape.javascript.JSObject;

public class WebViewSample extends Application {

    private Scene scene;

    @Override
    public void start(Stage stage) {
        // create the scene
        stage.setTitle("Web View");
        Browser browser = new Browser();
        scene = new Scene(browser, 750, 500, Color.web("#666970"));
        stage.setScene(scene);
        stage.show();
    }

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

class Browser extends Region {

    final WebView browser = new WebView();

    final WebEngine webEngine = browser.getEngine();

    public Browser() {

        //add the web view to the scene
        getChildren().add(browser);

        //add finished listener
        webEngine.getLoadWorker().stateProperty().addListener((obs, oldState, newState) -> {
            if (newState == Worker.State.SUCCEEDED) {
                executeJavaScript();
            }
        });

        // load the web page
        URL url = WebViewSample.class.getResource("chartist.html");
        String urlPath = url.toExternalForm();
        webEngine.load(urlPath);

    }

    private void executeJavaScript() {

        String script = "var chartist = new Chartist.Line(" + "'#chart'," + " " + "{"
                + " labels: [1, 2, 3, 4, 5, 6, 7, 8]," + "series: [" + " [5, 9, 7, 8, 5, 3, 5, 44]" + "]" + "}, " + ""
                + "{" + "  low: 0," + "  showArea: true" + "}" + "" + ");" + " var get = function(){return chartist};";

        webEngine.executeScript(script);

        Object resultJs = webEngine.executeScript("get()");

        //get line
        JSObject line = (JSObject) resultJs;
        String getKeys = "{var keys = [];for (var key in this) {keys.push(key);} keys;}";
        JSObject linekeys = (JSObject) line.eval(getKeys);

        JSObject options = (JSObject) line.eval("this.options");
        JSObject optionkeys = (JSObject) options.eval(getKeys);

        options.eval("this.showLine=false");

    }

    @Override
    protected void layoutChildren() {
        double w = getWidth();
        double h = getHeight();
        layoutInArea(browser, 0, 0, w, h, 0, HPos.CENTER, VPos.CENTER);
    }

    @Override
    protected double computePrefWidth(double height) {
        return 750;
    }

    @Override
    protected double computePrefHeight(double width) {
        return 500;
    }
}

Пример html страница :

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" type="text/css" href="chartist.min.css">       
</head>
<body>
    <div class="ct-chart" id="chart"></div>
    <script type="text/javascript" src="chartist.js"></script>
</body>
</html>

Для того, чтобы получить эту работу, chartist.js и chartist.min.css должны быть загружены и помещены в том же месте, что и файл html. Вы также можете включить их из интернета. Смотрите здесь еще один пример: https://www.snip2code.com/Snippet/233633/Chartist-js-example

Редактировать

Я создал обертку java для D3.js, смотрите

https://github.com/stefaneidelloth/javafx-d3


  Сведения об ответе

nYU

09:54, 12th August, 2020

Есть также JGraph, но я не уверен, что это только для графиков (т. е. узлов и ребер), или если это также делает диаграммы.


  Сведения об ответе

pumpa

13:28, 15th August, 2020

Вот что-то другое: это очень просто встроить веб-страницы в SWT просмотров. Я недавно попробовал его, и он работает очень хорошо. Вы можете видеть, к чему это приведет: есть много красивых компонентов построения графиков для HTML, это может быть вариант. Просто убедитесь, что компонент находится только на стороне клиента (если вы не хотите запустить сервер).

Я не тестировал Flash, но я уверен, что вы можете заставить его работать (естественно, это означает, что ваше программное обеспечение потребует установки плагина Flash).


  Сведения об ответе

appple

16:21, 29th August, 2020

JCharts - это еще один вариант. Он похож на JFreeChart, но документация бесплатна. Он не имеет прямой поддержки для SWT, но вы всегда можете создать изображение и встроить его в кадр SWT.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться