2013-05-02 47 views
1

我想在两条y轴和1个x轴的线图中画两条线。第一行是正确的,但第二行不符合x值。achartengine两条线与2 y轴和1个x轴 - >第二条线不适合

目前,它看起来像这样:

enter image description here

下面是代码:

bmiSeries = new XYSeries("BMI",0); 
    bmiSeries2 = new XYSeries("BMI Trefethen",1); 

    dataset = new XYMultipleSeriesDataset(); 

    bmiRenderer = new XYSeriesRenderer(); 
    bmiRenderer.setColor(getResources().getColor(R.color.green)); 
    bmiRenderer.setPointStyle(PointStyle.CIRCLE); 
    bmiRenderer.setFillPoints(true); 
    bmiRenderer.setLineWidth(2); 
    bmiRenderer.setDisplayChartValues(true); 

    bmiRenderer2 = new XYSeriesRenderer(); 
    bmiRenderer2.setColor(getResources().getColor(R.color.red)); 
    bmiRenderer2.setPointStyle(PointStyle.CIRCLE); 
    bmiRenderer2.setFillPoints(true); 
    bmiRenderer2.setLineWidth(2); 
    bmiRenderer2.setDisplayChartValues(true); 



    multiRenderer = new XYMultipleSeriesRenderer(2); 
    multiRenderer.setXLabels(0); 
    multiRenderer.setZoomButtonsVisible(true); 
    multiRenderer.setMargins(new int[] {0, 25 ,25,25}); 

    for(int i=0; i<bmiList.size();i++){ 
     bmiSeries.add(i, bmiList.get(i).getBmi_old()); 
     bmiSeries2.add(i, bmiList.get(i).getBmi_new()); 
     Date dat = bmiList.get(i).getDate(); 
     Format formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
     String date = formatter.format(dat); 
     multiRenderer.addXTextLabel(i, date); 
    } 


    dataset.addSeries(0, bmiSeries); 
    dataset.addSeries(1, bmiSeries2); 

    multiRenderer.addSeriesRenderer(bmiRenderer); 
    multiRenderer.addSeriesRenderer(bmiRenderer2); 
    multiRenderer.setBarSpacing(4); 
    multiRenderer.setApplyBackgroundColor(true); 
    multiRenderer.setBackgroundColor(Color.argb(0x00, 0x01, 0x01, 0x01)); 
    multiRenderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01)); 
    multiRenderer.setYLabelsColor(0, Color.BLACK); 
    multiRenderer.setXLabelsColor(Color.BLACK); 
    multiRenderer.setShowGrid(true); 
    multiRenderer.setZoomEnabled(true, false); 
    multiRenderer.setXTitle("Date"); 
    multiRenderer.setYTitle("BMI"); 
    multiRenderer.setLabelsTextSize(15); 
    multiRenderer.setXAxisMin(-1); 
    multiRenderer.setXAxisMax(2); 
    multiRenderer.setYAxisMin(bmiSeries.getMinY()-5,0); 
    multiRenderer.setYAxisMax(bmiSeries.getMaxY()+3,0); 
    multiRenderer.setYAxisMin(bmiSeries2.getMinY()-5,1); 
    multiRenderer.setYAxisMax(bmiSeries2.getMaxY()+3,1); 
    multiRenderer.setYAxisAlign(Align.RIGHT, 0); 
    multiRenderer.setPanEnabled(true, false); 
    multiRenderer.setChartValuesTextSize(10); 
    multiRenderer.setZoomLimits(new double[] {-2,10,0,10}); 
    multiRenderer.setPanLimits(new double[] { bmiSeries.getMinX()-1, bmiSeries.getMaxX()+10, bmiSeries.getMinY(), bmiSeries.getMaxY() }); 

    LinearLayout chartContainer = (LinearLayout) findViewById(R.id.chart_container); 
    ZoomListener listener = new ZoomListener() { 
      @Override 
      public void zoomReset() { 
       zoomR = 1; 
       multiRenderer.setChartValuesTextSize(10*zoomR); 
       multiRenderer.setLabelsTextSize(15); 

      } 

      @Override 
      public void zoomApplied(ZoomEvent e) { 
       if(e.isZoomIn()){ 
        zoomR += 0.3; 
       } 
       else{ 
        zoomR -= 0.3; 
       } 
       multiRenderer.setChartValuesTextSize(10*zoomR); 
       multiRenderer.setLabelsTextSize(15*zoomR); 

      } 
    }; 

    mChart = (GraphicalView) ChartFactory.getLineChartView(getBaseContext(), dataset, multiRenderer); 
    mChart.addZoomListener(listener, true, true); 
    chartContainer.addView(mChart); 

我希望有人能帮助我

回答

0

的问题是,你要设置的X仅适用于第一个比例尺。因此,您要么删除setXAxis*来电,要么为您的第二个等级添加类似的电话:

multiRenderer.setXAxisMin(-1, 1); 
multiRenderer.setXAxisMax(2, 1); 
+0

allready已测试过,但第一行消失。 – nowkin 2013-05-02 18:09:45