Android Graph Coordinatesystem

时间:2013-11-06 16:12:00

标签: android eclipse android-graphview

我正在尝试在我的Android应用中实现图表视图。它应该能够输入一个功能。 (例如:f(x1)=x²,或f(x)= sin(x)+ 5)

为此,我需要一个坐标系统,我可以在计算出大约50个点之后绘制我的函数。它应该稍后看起来类似于: graph image

我已经尝试使用android libary 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,我可以绘制一个Coordinate系统: first

但是一旦我添加data3,它看起来像:(因为数量巨大) second

有什么想法吗?最好和最简单的方法是什么? (我不需要多行或可扩展)我猜这是一个错误的库,因为没有正确的方法来绘制它,是吗?

谢谢!

编辑:正常工作:graphView.setManualYAxisBounds(100,-100); working

非常感谢jjo64

1 个答案:

答案 0 :(得分:0)

尝试使用graphView.setManualYAxisBounds(100, -100)

修复y轴边界