2016-10-17 16 views
0

x値が1〜100で、y値が1〜18の線グラフを作成したいとします。私はそれらを現在、テキストファイルに印刷する2つの配列に格納しています(100ポイントで構成される棒グラフを手動で作成したくないという明白な理由により)。アプリケーションウィンドウを使用した何か?Javaでは、2つの配列から線グラフを作成できますか?

私はあなたに何を求めているのかを明確にするために何を提供することができるのか分かりません。

+0

グラフライブラリを探します。 – ifly6

+0

私はこれまで何も試していない、私はこれについていくつかのガイドを見つけることを試みてきたが、何も見つかりませんでした。また、私のコードを投稿するための最良の方法を確認していません – Husk

答えて

1

これはおそらく何か?

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Graphics; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 

public final class LineGraph { 
    private LineGraph() { 

    } 

    public static void main(final String[] args) { 
     SwingUtilities.invokeLater(LineGraph::doRun); 
    } 

    private static void doRun() { 
     final int[] x = new int[] {0, 40, 80, 120, 160, 200, 240, 280, 320, 360}; 
     final int[] y = new int[] {100, 200, 100, 50, 200, 0, 300, 200, 100, 300}; 

     final 
     JFrame jFrame = new JFrame(); 
     jFrame.getContentPane().setLayout(new BorderLayout()); 
     jFrame.getContentPane().add(new JPanelImpl(x, y), BorderLayout.CENTER); 
     jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     jFrame.setSize(800, 600); 
     jFrame.setVisible(true); 
    } 

    private static final class JPanelImpl extends JPanel { 
     private final int[] x; 
     private final int[] y; 

     public JPanelImpl(final int[] x, final int[] y) { 
      this.x = x; 
      this.y = y; 
     } 

     @Override 
     public void paintComponent(final Graphics graphics) { 
      graphics.setColor(Color.WHITE); 
      graphics.fillRect(0, 0, getWidth(), getHeight()); 

      for(int i = 0; i < this.x.length; i++) { 
       if(i + 1 < this.x.length) { 
        final int x0 = this.x[i]; 
        final int y0 = this.y[i]; 
        final int x1 = this.x[i + 1]; 
        final int y1 = this.y[i + 1]; 

        graphics.setColor(Color.BLACK); 
        graphics.drawLine(x0, y0, x1, y1); 
        graphics.fillOval(x1 - 3, y1 - 3, 6, 6); 
       } 
      } 
     } 
    } 
} 
+0

ありがとうございますが、私はいくつかの問題があります。グラフは本当に小さく、左上隅にも、逆にも下にあります。悪いことを試みて、それを自分で修正してください。しかし、あなたはなぜ私に知らせてください。 – Husk

+0

ウィンドウは、最小Xがウィンドウの左側にある座標を使用します。最大Xは右側にあり、最小Yは上部にあり、最大Yは下部にあります。 X軸はあなたが望むようなものだと私は信じています。しかし、Y軸の場合、(高さ - y)のようなことをする(私が間違っていない場合)。 –

+0

私はそれを得ました、私は配列にそれらを設定するときに変数を掛けました。おかげで、これは本当に役に立ちます – Husk

関連する問題