我是新手使用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;
}
我想用这样的颜色填充图表,但这些颜色与上面的代码混在一起。