0

Android アプリにグラフ ビューを実装しようとしています。関数に入ることができるはずです。(例: f(x1) = x²、または f(x) = sin(x) + 5)

そのためには、約 50 ポイントを計算した後で関数を描画できる座標系が必要です。後で次のようになります。 グラフ画像

私はすでにAndroidライブラリで試してみましたGraphViewが、何かを描くことができましたが、このライブラリには座標がないため、グラフは「どこかに」あります。

        int num = 400;  
    GraphViewData[] data = new GraphViewData[num];  
    GraphViewData[] data2 = new GraphViewData[num]; 
    double x = -100;
    double y = 0;

    //Coordinate system x
    for (int i=0; i<num; i++) {  
           data[i] = new GraphViewData(x, y);  
           x = x + 0.5;
        } 

     x = 0;
     y = -100;
    for (int i=0; i<num; i++) {  
           data2[i] = new GraphViewData(x, y);  
           y = y + 0.5;
        } 

     x = -100;
     y = 0;

    GraphViewData[] data3 = new GraphViewData[num]; 
    //Coordinate system y
    for (int i=0; i<num; i++) {               
           y = (x * x);
           data3[i] = new GraphViewData(x, y);  
           x = x + 0.5;
        } 
    // sin curve

    for (int i=0; i<num; i++) {  
       y = Math.sin(x);
       y = x * x + 50;
       data2[i] = new GraphViewData(x, y);  
       x = x + 0.2;
    }   


    GraphView graphView = new LineGraphView(  
          this  
          , ""  
    );  


    // add data  
    graphView.addSeries(new GraphViewSeries(data)); 
    graphView.addSeries(new GraphViewSeries(data2));
    graphView.addSeries(new GraphViewSeries(data3)); 
    // set view port, start=-100, size=200
    graphView.setViewPort(-100, 200); 

    graphView.setScrollable(false);  
    graphView.setScalable(false);  

    LinearLayout layout = (LinearLayout) findViewById(R.id.graph1);  
    layout.addView(graphView);

data1 と data2 を使用すると、座標系を描画できます。 最初

しかし、data3を追加するとすぐに次のようになります:(膨大な量のため) 2番目

それについて何か考えはありますか?これを行うための最良かつ最も簡単な方法は何ですか? (複数行やスケーラブルは必要ありません)これを描画する正しい方法がないため、これは間違ったライブラリだと思いますね。

ありがとう !

編集: 次で正常に動作: graphView.setManualYAxisBounds(100, -100); 働く

jjo64 どうもありがとう

4

1 に答える 1

0

でy軸の境界を修正してみてくださいgraphView.setManualYAxisBounds(100, -100)

于 2013-11-19T10:14:15.040 に答える