首页 > 解决方案 > Android 应用开发 - 库 android-graphview

问题描述

我在 android studio 中的图形视图库上可视化时间序列数据时遇到问题。当我试图在 x 轴上针对非常小的值(以 0.00003 的间隔)绘制图表时,没有图表。但是,当我尝试针对整数值(在 1 的间隔内)进行绘图时,显示的图形与预期的一样。

我的工作代码 -

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_time);
    Intent intent = getIntent();
    int sample_freq = 32768;
    double []  data = intent.getDoubleArrayExtra(DataActivity.EXTRA_TIME_DATA);
    int n = data.length;
    GraphView graph = findViewById(R.id.graph);
    double sample_time = 1/sample_freq;
    DataPoint[] points = new DataPoint[n];
    for(int i = 0; i < n ; i++)
    {
        points[i] = new DataPoint(i, data[i]);
    }
    LineGraphSeries<DataPoint> series = new LineGraphSeries<>(points);
    graph.getViewport().setYAxisBoundsManual(true);
    graph.getViewport().setMinY(-15);
    graph.getViewport().setMaxY(15);
    graph.getViewport().setXAxisBoundsManual(true);
    graph.getViewport().setMinX(100);
    graph.getViewport().setMaxX(5000);
    graph.getViewport().setScalable(true);
    graph.getViewport().setScalableY(true);
    graph.addSeries(series);

    TextView textView = findViewById(R.id.textView);
    String message = String.valueOf(n);
    textView.setText(message);
}

不工作的代码 -

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_time);
    Intent intent = getIntent();
    int sample_freq = 32768;
    double []  data = intent.getDoubleArrayExtra(DataActivity.EXTRA_TIME_DATA);
    int n = data.length;
    GraphView graph = findViewById(R.id.graph);
    double sample_time = 1/sample_freq;
    DataPoint[] points = new DataPoint[n];
    for(int i = 0; i < n ; i++)
    {
        points[i] = new DataPoint(i*sample_time, data[i]);
    }
    LineGraphSeries<DataPoint> series = new LineGraphSeries<>(points);
    graph.getViewport().setYAxisBoundsManual(true);
    graph.getViewport().setMinY(-15);
    graph.getViewport().setMaxY(15);
    graph.getViewport().setXAxisBoundsManual(true);
    graph.getViewport().setMinX(0.01);
    graph.getViewport().setMaxX(1);
    graph.getViewport().setScalable(true);
    graph.getViewport().setScalableY(true);
    graph.addSeries(series);

    TextView textView = findViewById(R.id.textView);
    String message = String.valueOf(n);
    textView.setText(message);
}

标签: android-studioandroid-graphview

解决方案


推荐阅读