17

SWT/Eclipse RCP アプリケーションでチャートを描画するための次のライブラリを知っています。

SWT できれいなグラフを描画するための他のライブラリはありますか? または、一般的に Java のチャートですか? 結局のところ、いつでも画像を表示できます...

4

11 に答える 11

11

BIRT や JGraph は使用していませんが、SWT アプリケーションでは JFreeChart を使用しています。SWT で JFreeChart を使用する最良の方法は、コンポジットを AWT フレームにして、JFreeChart の AWT 機能を使用することです。これを行う方法は、コンポジットを作成することです

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 コードは非常に貧弱です (これについては、Gilbert 氏は SWT をよく知らず、AWT 用に作成されています)。私の 2 つの最大の問題は、AWT イベントが SWT を介してバブルアップするため、いくつかの誤ったイベントが発生することと、AWT フレームをラップするために JFreeChart が大幅に遅くなることです。

@zvikico

グラフを Web ページに配置するというアイデアは、おそらく適切な方法ではありません。最初にいくつかの問題があります。それは、異なるプラットフォームでの Web ブラウザーの統合を Eclipse が処理する方法が一貫していないことです。また、Web 用のいくつかのグラフ作成パッケージについての私の理解から、それらはそのセットアップを必要とするサーバー側であり、私のものを含む多くの企業もプロキシ サーバーを使用しており、これが Eclipse Web ブラウジングで問題を引き起こすことがあります。

于 2008-09-04T02:59:33.220 に答える
8

SWTChart は、折れ線グラフ、散布図、棒グラフ、および面グラフで良好な結果を示します。API は簡単で、Web サイトには多数の例があります。Google で検索してから、1 時間もかからずにデータを表示できるようになりました。

SWTチャート

于 2010-01-20T15:21:39.450 に答える
5

あなたもこれが好きかもしれません

それはあなた自身のデータプロバイダーでリアルタイムデータをプロットする能力を持っています。

ここに画像の説明を入力してください

于 2012-01-07T16:57:18.637 に答える
2

私が使用したのはJChart2Dと JFreeChart です。夏の間、私はライブ プロッター アプリケーションを作成し、そのために JFreeChart を使用しました。プロジェクトを開始した人は JChart2D を使用していましたが、グラフのルック アンド フィールを微調整するための十分なオプションがないことがわかりました。

JChart2D は非常に高速であるはずなので、ライブ プロットを行う必要がある場合は、JFreeChart で 1 秒間に数回プロットを実行しても問題はありませんでしたが、これを参照してください。

java2s.comにはチャート作成ライブラリのかなりのリストもあります

于 2010-01-20T15:31:56.087 に答える
2

また、Eclipse RCP アプリ用のグラフ作成ライブラリも探していましたが、ここで Caleb の投稿に出くわしました。私にとっては、JFreeChart よりもはるかに高速であり、拡張も容易です。本当に何かについて文句を言わなければならない場合は、Javadoc をもう少し冗長にすることができますが、これは他のすべてが優れていることを示しているだけです。

于 2012-02-02T22:29:47.620 に答える
1

いくつかのオプションを評価した後、Eclipse プラグインでプロットを表示するために JavaScript ライブラリを使用することにしました。zvikico が既に示唆しているように、ブラウザーで HTML ページを表示することが可能です。HTML ページでは、JavaScript ライブラリの 1 つを利用して実際のプロットを行うことができます。Chartist を使用している場合は、コンテキスト メニューから画像を 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 ファイルと同じ場所に配置する必要があります。Web からそれらを含めることもできます。別の例については、こちらを参照してください: https://www.snip2code.com/Snippet/233633/Chartist-js-example

編集

D3.js の Java ラッパーを作成しました。

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

于 2015-08-17T11:52:52.987 に答える
1

ILOG JViews Chartsもありますが、これは十分な機能を備えているように見えますが、余裕があればの話ですが。 Eclipse での使用に関する追加情報を次に示します。

于 2008-09-05T13:53:47.660 に答える
1

3D データをプロットするためのシンプルな Java ライブラリであるjzy3dを試すことをお勧めします。これは、Java、AWT、Swing、または SWT 用です。

于 2010-07-08T17:37:00.673 に答える
0

JChartsは別のオプションです。JFreeChart に似ていますが、ドキュメントは無料です。SWT を直接サポートしていませんが、いつでも画像を生成して SWT フレームに埋め込むことができます。

于 2008-09-07T19:52:20.043 に答える
0

SWT ビューに Web ページを埋め込むのは非常に重要です。最近試してみましたが、非常にうまく機能します。HTML 用の美しいチャート コンポーネントがたくさんあり、オプションになる可能性があります。コンポーネントがクライアント側のみであることを確認してください (サーバーを起動する場合を除く)。

私は Flash をテストしていませんが、動作させることができると確信しています (当然、これは、ソフトウェアに Flash プラグインをインストールする必要があることを意味します)。

于 2008-08-25T12:13:53.357 に答える
0

JGraph もありますが、それがグラフ (つまり、ノードとエッジ) だけのものなのか、それともチャートも対象なのかはわかりません。

于 2008-08-22T16:46:22.400 に答える