AchartEngine:访问时间序列中的比例数

时间:2014-03-26 04:36:09

标签: android achartengine

我正在使用AchartEngine,尝试创建一个包含ScatterChart和LineChart的组合图表,两者都基于TimeSeries,有两个Y轴,每个系列一个。该项目是生成一个风力图,有点像这样: http://www.clevelandweather.net/wind/default.php (参见"前24小时"或"前7天"示例)。

我遇到了TimeSeries的构造函数(与父类XYSeries不同)不包含s​​caleNumber的问题 - 我需要这个来正确配置两个Y轴。我读过这个问题: AchartEngine: How to use TimeSeries with two different scales CraigB编辑的第二个答案似乎是一个很好的方法,但我无法编译 - 编译器标记" VectorChart.MyTimeSeries类型的方法getPadding(double)必须覆盖或实现超类型方法&# 34 ;.发生了什么事?

我是一个android / java新手所以请为我拼出来!

我的代码:

package au.com.merenito.seatalkcharter;

import java.util.Date;
import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.ScatterChart;
import org.achartengine.chart.TimeChart;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYSeriesRenderer;
import android.content.Context;

public class VectorChart {
private GraphicalView mChartView;
private MyTimeSeries mag_dataset;
private MyTimeSeries dir_dataset;
private XYMultipleSeriesDataset mDataset;
private XYSeriesRenderer mag_renderer;
private XYSeriesRenderer dir_renderer;
private XYMultipleSeriesRenderer mRenderer;
int maxPoints;

private class MyTimeSeries extends XYSeries {       
    public MyTimeSeries(String title, int scaleNumber) {
        super(title, scaleNumber);
    }
    public synchronized void add(Date x, double y) {
        super.add(x.getTime(), y);
    }
    @Override
    protected double getPadding(double x) { //********* Compiler error here!!
        return 1;
    }
}

public VectorChart(String title, int mP)
{
    maxPoints = mP;
    mag_dataset = new MyTimeSeries(title,0);
    dir_dataset = new MyTimeSeries("Dir",1);        
    mDataset = new XYMultipleSeriesDataset();
    mDataset.addSeries(mag_dataset);
    mDataset.addSeries(dir_dataset);

    mag_renderer = new XYSeriesRenderer();  
    dir_renderer = new XYSeriesRenderer();  
    //put any line customisation here, eg renderer.setColor

    mRenderer = new XYMultipleSeriesRenderer();         
    mRenderer.addSeriesRenderer(mag_renderer);
    mRenderer.addSeriesRenderer(dir_renderer);

    mRenderer.setZoomEnabled(false, false);
    mRenderer.setPanEnabled(false,false);       
    mRenderer.setChartTitle(title);
}
public GraphicalView getView(Context context)
{
    String[] types = new String[] {TimeChart.TYPE, ScatterChart.TYPE };
    mChartView = ChartFactory.getCombinedXYChartView(context, mDataset, mRenderer, types ); 
    return mChartView;
}
public void addNewPoint(Date x, float mag, float dir, boolean reFresh)
{
    mag_dataset.add(x, mag);
    dir_dataset.add(x, dir);
    while (mag_dataset.getItemCount()>maxPoints) mag_dataset.remove(0);
    while (dir_dataset.getItemCount()>maxPoints) dir_dataset.remove(0);
    if(reFresh) mChartView.repaint();
}
}

1 个答案:

答案 0 :(得分:0)

尝试

private class MyTimeSeries extends XYSeries
    {
        public MyTimeSeries(String title, int scaleNumber)
        {
            super(title, scaleNumber);
        }
        public synchronized void add(Date x, double y)
        {
            super.add(x.getTime(), y);
        }
        @Override
        protected double getPadding()
        {
            return super.getPadding();
        }
    }