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

голоса
18

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

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

Задан 22/08/2008 в 17:39
источник пользователем
На других языках...                            


11 ответов

голоса
11

Я не использовал 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, ручки интеграции веб-браузера на различных платформах противоречива. Кроме того, от моего понимания нескольких пакетов для построения графиков в Интернете они на стороне сервера требует, что установка, также многие компании, в том числе мое использование прокси-серверов и иногда это создает проблемы с веб-браузера Eclipse.

Ответил 04/09/2008 в 03:59
источник пользователем

голоса
8

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

SWTChart

Ответил 20/01/2010 в 16:21
источник пользователем

голоса
5

Вы могли бы это один тоже

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

введите описание изображения здесь

Ответил 07/01/2012 в 17:57
источник пользователем

голоса
2

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

Ответил 02/02/2012 в 23:29
источник пользователем

голоса
2

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

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

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

Ответил 20/01/2010 в 16:31
источник пользователем

голоса
1

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

Некоторые JavaScript черчения библиотеки:

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

введите описание изображения здесь

Пример кода 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

Ответил 17/08/2015 в 11:52
источник пользователем

голоса
1

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

Ответил 08/07/2010 в 18:37
источник пользователем

голоса
1

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

Ответил 05/09/2008 в 14:53
источник пользователем

голоса
0

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

Ответил 07/09/2008 в 20:52
источник пользователем

голоса
0

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

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

Ответил 25/08/2008 в 13:13
источник пользователем

голоса
0

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

Ответил 22/08/2008 в 17:46
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more