2012-05-16 27 views
0

我在AChartEngine中有一個簡單的TimeChart,一切正常,但我不知道如何添加第二個系列。我的每一次嘗試都是由ANR結束的。你有什麼想法如何添加另一個系列?這是我的代碼:AChartEngine add second series

編輯:我改變了代碼,我嘗試添加第二行,但我有ANR:

public class TestgrafActivity extends Activity { 
private XYMultipleSeriesDataset mDataset; 
private XYMultipleSeriesRenderer mRenderer; 
List<double[]> values = new ArrayList<double[]>(); 
private GraphicalView mChartView; 
private TimeSeries time_series,time_series2; 


private LinearLayout layout; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    layout = (LinearLayout) findViewById(R.id.chart); 

    time_series = new TimeSeries("Temperature"); 
    for (int i = 0; i < 50; i++){ 
     long value = new Date().getTime(); 
     time_series.add(new Date(value+(i*1000)), new Random().nextInt(25)); 

    } 

    time_series2 = new TimeSeries("Temperature2"); 
    for (int i = 0; i < 50; i++){ 
     long value = new Date().getTime(); 
     time_series2.add(new Date(value+(i*1000)), new Random().nextInt(40)); 

    } 


    mDataset = new XYMultipleSeriesDataset(); 
    mDataset.addSeries(time_series); 
    mDataset.addSeries(time_series2); 

    XYSeriesRenderer r = new XYSeriesRenderer(); 
    r.setColor(Color.GREEN); 
    r.setPointStyle(PointStyle.CIRCLE); 
    r.setFillPoints(true); 
    r.setLineWidth(3); 
    r.setDisplayChartValues(true); 

    XYSeriesRenderer r2 = new XYSeriesRenderer(); 
    r2.setColor(Color.RED); 
    r2.setPointStyle(PointStyle.CIRCLE); 
    r2.setFillPoints(true); 
    r2.setLineWidth(3); 
    r2.setDisplayChartValues(true); 

    mRenderer = new XYMultipleSeriesRenderer(); 
    mRenderer.addSeriesRenderer(r); 
    mRenderer.addSeriesRenderer(r2); 


    mRenderer.setAxisTitleTextSize(16); 
    mRenderer.setChartTitleTextSize(20); 
    mRenderer.setLabelsTextSize(15); 
    mRenderer.setLegendTextSize(15); 
    mRenderer.setPointSize(3f); 
    mRenderer.setPanEnabled(true, true); 
    mRenderer.setZoomEnabled(true, true); 


    mRenderer.addSeriesRenderer(r2); 
    mRenderer.setClickEnabled(true); 
    mRenderer.setSelectableBuffer(20); 
    mRenderer.setPanEnabled(true);  
    mRenderer.setChartTitle("Temperature"); 
    mRenderer.setXTitle("Time"); 
    mRenderer.setYTitle("Degrees C"); 
    mRenderer.setZoomButtonsVisible(true); 
    mRenderer.setZoomEnabled(true); 
    mRenderer.setXLabels(12); 
    mRenderer.setYLabels(10); 
    mRenderer.setShowGrid(true); 
    mRenderer.setXLabelsAlign(Align.RIGHT); 
    mRenderer.setYLabelsAlign(Align.RIGHT); 


    mChartView = ChartFactory.getTimeChartView(this, mDataset, mRenderer, 
      "HH:mm:ss"); 

    layout.addView(mChartView); 
} 

}

回答

1

你必須在這段代碼只有一個系列。您嘗試添加其他系列的代碼在哪裏?

一般的做法是這樣的:

mDataset.addSeries(0, time_series); 
mRenderer.addSeriesRenderer(0, time_renderer); 
//... 
//... 
mDataset.addSeries(1, some_other_series); 
mRenderer.addSeriesRenderer(1, some_other_renderer); 
//... 
//... 
+0

好吧,我加了編輯的代碼,你可以檢查什麼是錯的 –

+0

1)它看起來像要添加R2的兩倍(這意味着有3個seriesrenderers但只有2數據集)。嘗試修復。 2)如果你從LogCat提供異常捕獲提供異常捕獲,確實有助於指出錯誤 – curioustechizen

+0

1 - 盲目的錯誤,這是因爲我增加了兩次r2,謝謝:) –