1

2 つの y 軸と 1 つの x 軸を持つ 1 つの折れ線グラフに 2 つの線を描画しようとしています。最初の行は正しいですが、2 行目は x 値に適合しません。

現在、次のようになっています。

ここに画像の説明を入力

コードは次のとおりです。

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);

誰かが私を助けてくれることを願っています

4

1 に答える 1