2016-08-12 7 views
0

私はMatlabのGUIをJavaFX 8アプレットに変換しようとしています。以下に示すように、プロットがイメージ上にある散布図を作成したいと思います。 CIE図の画像上に見られるよう画像に散布図をプロットする方法は?

Example of desired scatter plot

は、散布図と一体化されています。私はスタックペインを使用しようとしましたが、画像が上にあるのでプロットは表示されません。

編集 -

)(layoutplotchildrenを上書きしようとしている:

class SuperScatterChart extends ScatterChart{ 

     public SuperScatterChart(Axis arg0, Axis arg1) { 
      super(arg0, arg1); 
      // TODO Auto-generated constructor stub 
     } 




     @Override 
     protected void layoutPlotChildren(){ 

      ImageView iv1 = new ImageView(new Image("file:///C:/Desktop/cie.png",450,450,true,true)); 
      // How do I add iv1 to plot children? 
      super.layoutPlotChildren(); 

     } 



    } 
+0

2つのアプローチが考えられます。 1. CSSを使用します:['.chart-plot-background'ノード](http://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html#xychart) ['Region'](http://docs.oracle.com/javase/8/javafx/api/javafx/scene/doc-files/cssref.html#region)であるため、' -fx-背景画像 'をCSSに表示します。 2.スキャッタポイントを追加するために 'super.layoutPlotChildren()'を呼び出す前に 'ScatterChart'をサブクラス化し、' layoutPlotChildren() 'をオーバーライドしてイメージをプロット領域に追加します。少し類似したものについては、http://stackoverflow.com/questions/38871202を参照してください。 –

+0

また、「スタックペインを使用しようとしましたが、画像が上になるとプロットが表示されません。 - 画像をStackpane *の前に追加すると、それは起こらないはずです。 –

+0

私は最初のアプローチを試みましたが、画像は散布図の後ろにあります。 2番目のアプローチでは、上書きされたlayoutPlotChildren()のプロット領域にイメージを変更するためのコード構文は何ですか? Thanks @James_D – hfz

答えて

0

あなたは

getPlotChildren().add(iv1); 

でプロット子供に画像ビューを追加あなたにはこれを実行する必要はありませんlayoutPlotChildren()メソッドをオーバーライドします。コンストラクタで1回だけ行うだけで十分です。

class SuperScatterChart extends ScatterChart<Number, Number>{ 

    private final ImageView iv1 ; 

    public SuperScatterChart(NumberAxis xAxis, NumberAxis yAxis) { 
     super(xAxis, yAxis); 
     iv1 = new ImageView(new Image("file:///C:/Desktop/cie.png",450,450,true,true)); 
     getPlotChildren().add(iv1); 
    } 

} 

これはイメージをデフォルトの場所に配置します(私はプロット領域がデフォルトのレイアウトをしないと思うので、これはちょうど左上に配置されると思います)。あなたはそれを移動する必要がある場合は、代わりにピクセルベースの座標系の、これはあなたに簡単にチャート軸の座標系、つまり、「プロット座標」を使用して画像を配置する機会を与えてくれます

@Override 
protected void layoutPlotChildren() { 
    double x = ... ; // x coordinate of image in xAxis coordinates 
    double y = ... ; // y coordinate of image in yAxis coordinates 

    double layoutX = getXAxis().getDisplayPosition(x); 
    double layoutY = getYAxis().getDisplayPosition(y); 

    iv1.setLayoutX(layoutX); 
    iv1.setLayoutY(layoutY); 

    super.layoutPlotChildren(); 
} 

注意を追加。

+0

ありがとうございました!これほど長い間これを理解しようとしていた。 @James_D – hfz

関連する問題