android如何在同一日期绘制具有多个图的art折线图取决于时间序列



我正在使用achartengine绘制显示血液的折线图糖在日期方面。我成功地画出了折线图。但是,我在这里挣扎了一段时间,我每天的价值观不止一个用于血糖检查。我不知道如何在同一日期在折线图中显示多个值。

Thanks Advance..
 Note: I need to show the line graph for multiple values each day. Normally Blood 
 sugar possible for checking for minimum 3 times per day.
 that's my problem.  

My Code : my code is very usefull for normal line graph generating..
    public class GraphActivity extends Activity {
private ArrayList<String> mMonthArrayList = new ArrayList<String>() ;
private GraphicalView mChart ;
@Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toast.makeText(getApplicationContext(), "SecondActivity", 20).show();
    mMonthArrayList.add("01/01/2013");
    mMonthArrayList.add("02/01/2013");
    mMonthArrayList.add("03/01/2013");
    mMonthArrayList.add("04/01/2013");
    mMonthArrayList.add("05/01/2013");
    mMonthArrayList.add("06/01/2013");
    mMonthArrayList.add("07/01/2013");
    mMonthArrayList.add("08/01/2013");
    mMonthArrayList.add("09/01/2013");
    mMonthArrayList.add("10/01/2013");
    mMonthArrayList.add("11/01/2013");
    mMonthArrayList.add("12/01/2013");

    openChart();
}
private void openChart() 
{
    int xsideData[] = {0,2,3,4,6};
    int ysideData[] = {200,300,500,600,400};
    /*ArrayList<Integer> xsideData = new ArrayList<Integer>() ;
    xsideData.add(0);
    xsideData.add(1);
    xsideData.add(2);
    xsideData.add(3);
    xsideData.add(4);
    ArrayList<Integer> ysideData = new ArrayList<Integer>() ;
    ysideData.add(200);
    ysideData.add(300);
    ysideData.add(400);
    ysideData.add(600);
    ysideData.add(800);*/
    XYSeries xyseriesData = new XYSeries("XYSERIES TITLE");
    XYSeriesRenderer xyRenderer = new XYSeriesRenderer() ;
    XYMultipleSeriesDataset xymultipleDataset = new XYMultipleSeriesDataset();
    // Adding data to xside and yside Series
    for(int i = 0 ; i < xsideData.length; i++ ) {
        xyseriesData.add(xsideData[i], ysideData[i]);
    }
    xymultipleDataset.addSeries(xyseriesData);
    xyRenderer.setColor(Color.WHITE);
    xyRenderer.setPointStyle(PointStyle.CIRCLE);
    xyRenderer.setFillPoints(true);
    xyRenderer.setLineWidth(1);
    xyRenderer.setDisplayChartValues(true);
    // Creating a XYMultipleSeriesRenderer to customize the whole chart
    XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
    multiRenderer.setXLabels(0);
    multiRenderer.setXTitle("Year 2012");
    //multiRenderer.setZoomButtonsVisible(true);   
    multiRenderer.setGridColor(Color.WHITE);
    multiRenderer.setShowGrid(true);
    multiRenderer.setLabelsTextSize(15);
    multiRenderer.setLegendTextSize(15);
    multiRenderer.setMargins(new int[] { 20, 30, 15, 0 });
    multiRenderer.setXLabels(7);
    multiRenderer.setYLabels(5);
    multiRenderer.setDisplayChartValues(false);
    //multiRenderer.setShowGrid(false);
    for(int i=0;i<xsideData.length;i++)
    {
        multiRenderer.addXTextLabel(i, mMonthArrayList.get(i));     
    }       
    multiRenderer.addSeriesRenderer(xyRenderer);
    LinearLayout chartContainer = (LinearLayout) findViewById(R.id.chart_container);
    // Creating a Line Chart
mChart = (GraphicalView) ChartFactory.
    getLineChartView(getBaseContext(), xymultipleDataset, multiRenderer);       
    // Adding the Line Chart to the LinearLayout
    chartContainer.addView(mChart);    
}
    }
      My output image : 
     ![enter image description here][1]

看看这段代码。。。运行良好

公共类NewGraph扩展Activity{

private XYMultipleSeriesDataset mDataset;
private XYMultipleSeriesRenderer mRenderer;
List<double[]> values = new ArrayList<double[]>();
private GraphicalView mChartView;
private TimeSeries time_series;
// chart container
private LinearLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.testlayout);
    layout = (LinearLayout) findViewById(R.id.chart);
    // create dataset and renderer
    mDataset = new XYMultipleSeriesDataset();
    mRenderer = new XYMultipleSeriesRenderer();
    mRenderer.setAxisTitleTextSize(16);
    mRenderer.setChartTitleTextSize(20);
    mRenderer.setLabelsTextSize(15);
    mRenderer.setLegendTextSize(15);
    mRenderer.setPointSize(3f);
    XYSeriesRenderer r = new XYSeriesRenderer();
    r.setColor(Color.GREEN);
    r.setPointStyle(PointStyle.CIRCLE);
    r.setFillPoints(true);
    mRenderer.addSeriesRenderer(r);
    mRenderer.setClickEnabled(true);
    mRenderer.setSelectableBuffer(20);
    mRenderer.setPanEnabled(true);
    time_series = new TimeSeries("test");

    mDataset.addSeries(time_series);
    fillData();
    int pos=time_series.getItemCount();
    Log.v("newgraph", "pos"+pos);
    mChartView = ChartFactory.getTimeChartView(this, mDataset, mRenderer,
            "dd-MMM-yyyy");
    layout.addView(mChartView);
}
private void fillData() 
{
  //  long value = new Date().getTime() - 3 * TimeChart.DAY;
    final Calendar c = Calendar.getInstance();
    c.set(Calendar.HOUR_OF_DAY, 10);
    long mytimestamp1=c.getTimeInMillis();
    c.set(Calendar.HOUR_OF_DAY, 11);
    long mytimestamp2=c.getTimeInMillis();
    c.set(Calendar.HOUR_OF_DAY, 12);
    long mytimestamp3=c.getTimeInMillis();
    c.set(Calendar.HOUR_OF_DAY, 13);
    long mytimestamp4=c.getTimeInMillis();
    c.set(Calendar.HOUR_OF_DAY, 14);
    long mytimestamp5=c.getTimeInMillis();
    c.set(Calendar.HOUR_OF_DAY, 15);
    long mytimestamp6=c.getTimeInMillis();
    c.set(Calendar.HOUR_OF_DAY, 16);
    c.add(Calendar.DATE, 1);
    c.set(Calendar.HOUR_OF_DAY,12);
    long mytimestamp7=c.getTimeInMillis();
    time_series.add(mytimestamp1, 10);
    time_series.add(mytimestamp2, 20);
    time_series.add(mytimestamp3, 30);
    time_series.add(mytimestamp4, 40);
    time_series.add(mytimestamp5, 50);
    time_series.add(mytimestamp6, 60);
    time_series.add(mytimestamp7,30);
    /*time_series.add(new Date(mytimestamp1), 10);
    time_series.add(new Date(mytimestamp2), 20);
    time_series.add(new Date(mytimestamp3), 30);
    time_series.add(new Date(mytimestamp4), 40);
    time_series.add(new Date(mytimestamp5), 50);
    time_series.add(new Date(mytimestamp6), 60);
    */
}

最新更新