2014-03-26 17 views
0

我使用AchartEngine,並嘗試創建一個組合圖表,其中包含基於TimeSeries的ScatterChart和LineChart,並帶有兩個Y軸,每個系列一個。該項目將生成一個風圖,有點像這樣: http://www.clevelandweather.net/wind/default.php (請參閱「前24小時」或「前7天」示例)。AchartEngine:在TimeSeries中訪問scaleNumber

我想到了TimeSeries的構造函數(與父類XYSeries不同)沒有包含scaleNumber的問題 - 我需要這個來正確配置兩個Y軸。我讀過這個問題: AchartEngine: How to use TimeSeries with two different scales CraigB編輯的第二個答案似乎是一個好方法,但我不能讓它編譯 - 編譯器標誌「VectorChart.MyTimeSeries類型的方法getPadding(double)必須覆蓋或實現超類型方法「。這是怎麼回事?

我是一個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(); 
} 
} 

回答

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(); 
     } 
    } 
+0

是的,就是這樣的感謝 - 我應該自己發現的! –