我使用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();
}
}
是的,就是這樣的感謝 - 我應該自己發現的! –