MPAndroid:无法使用MPAndroid Chart填充两行之间的颜色

时间:2018-06-15 18:25:21

标签: android graph charts view mpandroidchart

我是新手使用MPAndroid Chart并尝试填充两行之间的颜色。我也经历了https://stackoverflow.com/a/43452404个答案,而且我无法弄清楚我的问题。以下是我的代码:

    mChart = (CombinedChart) findViewById(R.id.chart1);
    mChart.getDescription().setText("Age Vs Weight");
    mChart.setBackgroundColor(Color.WHITE);
    mChart.setDrawGridBackground(true);
    mChart.setDrawBarShadow(true);

    // draw bars behind lines
    mChart.setDrawOrder(new CombinedChart.DrawOrder[]{
            CombinedChart.DrawOrder.BAR,  CombinedChart.DrawOrder.LINE , CombinedChart.DrawOrder.SCATTER
    }); 
    YAxis rightAxis = mChart.getAxisRight();
    rightAxis.setDrawGridLines(false);
    rightAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)

    YAxis leftAxis = mChart.getAxisLeft();
    leftAxis.setDrawGridLines(false);
    leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)
    leftAxis.setEnabled(true);
    leftAxis.setDrawLabels(true);


    XAxis xAxis = mChart.getXAxis();
    xAxis.setPosition(XAxis.XAxisPosition.BOTH_SIDED);
    xAxis.setAxisMinimum(0f);
    xAxis.setGranularity(1f);
    XAxis xAxis2 = mChart.getXAxis();
    xAxis2.setPosition(XAxis.XAxisPosition.BOTH_SIDED);
    xAxis2.setAxisMinimum(0f);
    xAxis2.setGranularity(1f);

    data = new CombinedData();

    LineData mlineData=generateLineData();
    mlineData.addDataSet(generateLineData1().getDataSetByIndex(0));
    mlineData.addDataSet(generateLineData2().getDataSetByIndex(0));
    data.setData(mlineData);
    mChart.invalidate();
    mChart.setData(data);


    private LineData generateLineData() {

    LineData d = new LineData();
    ArrayList<Entry> entries = new ArrayList<Entry>();
    entries = getLineEntriesData(entries);

    set = new LineDataSet(entries, "Line");
    set.setColors(ColorTemplate.COLORFUL_COLORS);
    set.setLineWidth(2.5f);
    set.setCircleColor(Color.RED);
    set.setCircleRadius(2f);
    set.setDrawValues(false);
    set.setValueTextSize(10f);
    set.setValueTextColor(Color.rgb(240, 238, 70));
    set.setDrawFilled(true);
    set.setFillColor(Color.RED);
    set.setAxisDependency(YAxis.AxisDependency.LEFT);


    d.addDataSet(set);

    return d;
}

    private LineData generateLineData1() {

    LineData d = new LineData();
    ArrayList<Entry> entries = new ArrayList<Entry>();
    entries = getLineEntriesData1(entries);

    set1 = new LineDataSet(entries, "Line");
    set1.setColors(ColorTemplate.COLORFUL_COLORS);
    set1.setLineWidth(2.5f);
    set1.setCircleColor(Color.YELLOW);
    set1.setCircleRadius(2f);
    set1.setDrawValues(false);
    set1.setValueTextSize(10f);
    set1.setValueTextColor(Color.RED);
    set1.setDrawFilled(true);
    set1.setFillColor(Color.YELLOW);


    set1.setAxisDependency(YAxis.AxisDependency.LEFT);


    d.addDataSet(set1);


    return d;
}

    private LineData generateLineData2() {

    LineData d = new LineData();
    ArrayList<Entry> entries = new ArrayList<Entry>();
    entries = getLineEntriesData2(entries);

    set2 = new LineDataSet(entries, "Line");
    set2.setColors(ColorTemplate.COLORFUL_COLORS);
    set2.setLineWidth(2.5f);
    set2.setCircleColor(Color.GREEN);
    set2.setCircleRadius(2f);
    set2.setDrawValues(false);
    set2.setValueTextSize(10f);
    set2.setValueTextColor(Color.RED);


    set2.setAxisDependency(YAxis.AxisDependency.LEFT);

    set2.setDrawFilled(true);
    set2.setFillColor(Color.GREEN);

    d.addDataSet(set2);

    return d;
}


private ArrayList<Entry> getLineEntriesData(ArrayList<Entry> entries){
    entries.add(new Entry(0, 2));
    entries.add(new Entry(2, (float) 3.8));
    entries.add(new Entry(4, (float) 4.9));
    entries.add(new Entry(6, (float) 5.6));
    entries.add(new Entry(8, (float) 6.2));
    entries.add(new Entry(10, (float) 6.53));
    entries.add(new Entry(12, (float) 6.95));
    entries.add(new Entry(14, (float) 7.1));
    entries.add(new Entry(16, (float) 7.5));
    entries.add(new Entry(18, (float) 7.85));
    entries.add(new Entry(20, (float) 8.06));
    entries.add(new Entry(22, (float) 8.48));
    entries.add(new Entry(24, (float) 8.54));

    return entries;
}

  private ArrayList<Entry> getLineEntriesData1(ArrayList<Entry> entries){
    entries.add(new Entry(0, (float) 2.3));
    entries.add(new Entry(2, (float) 4.3));
    entries.add(new Entry(4, (float) 5.6));
    entries.add(new Entry(6, (float) 6.4));
    entries.add(new Entry(8, (float) 6.9));
    entries.add(new Entry(10, (float) 7.48));
    entries.add(new Entry(12, (float) 7.6));
    entries.add(new Entry(14, (float) 8.1));
    entries.add(new Entry(16, (float) 8.5));
    entries.add(new Entry(18, (float) 8.75));
    entries.add(new Entry(20, (float) 9.1));
    entries.add(new Entry(22, (float) 9.48));
    entries.add(new Entry(24, (float) 9.6));

    return entries;
}

private ArrayList<Entry> getLineEntriesData2(ArrayList<Entry> entries){
    entries.add(new Entry(0, (float) 4.4));
    entries.add(new Entry(2, (float) 7.1));
    entries.add(new Entry(4, (float) 8.6));
    entries.add(new Entry(6, (float) 9.9));
    entries.add(new Entry(8, (float) 10.6));
    entries.add(new Entry(10, (float) 11.5));
    entries.add(new Entry(12, 12));
    entries.add(new Entry(14, (float) 12.6));
    entries.add(new Entry(16, (float) 13.1));
    entries.add(new Entry(18, (float) 13.6));
    entries.add(new Entry(20, (float) 14.2));
    entries.add(new Entry(22, (float) 14.6));
    entries.add(new Entry(24, (float) 15.4));

    return entries;
}

我想用这样的颜色填充图表,但这些颜色与上面的代码混在一起。

Achievable chart image

0 个答案:

没有答案