我正在尝试在我的Android应用中实现图表视图。它应该能够输入一个功能。 (例如:f(x1)=x²,或f(x)= sin(x)+ 5)
为此,我需要一个坐标系统,我可以在计算出大约50个点之后绘制我的函数。它应该稍后看起来类似于:
我已经尝试使用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系统:
但是一旦我添加data3,它看起来像:(因为数量巨大)
有什么想法吗?最好和最简单的方法是什么? (我不需要多行或可扩展)我猜这是一个错误的库,因为没有正确的方法来绘制它,是吗?
谢谢!
编辑:正常工作:graphView.setManualYAxisBounds(100,-100);
非常感谢jjo64
答案 0 :(得分:0)
尝试使用graphView.setManualYAxisBounds(100, -100)