如何制作MPAndroidChart背景?

时间:2015-05-28 09:37:22

标签: android mpandroidchart

设计师向我发送了如下图表:

enter image description here

但我不知道如何制作这样的背景,因为这个图表背景有,因为你可以看到每种图表项目都有两种不同的颜色。

这是我的结果

enter image description here

有可能制作图表背景作为设计师吗?

2 个答案:

答案 0 :(得分:0)

您可以绘制组合图表[see this]

如你所述,有一个绘制图形的技巧。在组合图表中,使用最大值绘制条形图并根据需要设置颜色。

答案 1 :(得分:0)

我猜@abhinav的意思是这样的:

@Override
protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.chart);

    //
    // configure chart
    final CombinedChart chart = (CombinedChart) findViewById(R.id.chart);

    // prepare labels on x-axis
    final List<String> labels = new ArrayList<>();
    labels.add("MAY 22");
    labels.add("MAY 23");
    labels.add("MAY 24");
    labels.add("MAY 25");
    labels.add("MAY 26");
    labels.add("MAY 27");
    labels.add("MAY 28");

    // prepare data for line graph
    final List<Entry> ratesEntries = new ArrayList<>();
    ratesEntries.add(new Entry(85f, 0));
    ratesEntries.add(new Entry(75f, 1));
    ratesEntries.add(new Entry(15f, 2));
    ratesEntries.add(new Entry(40f, 3));
    ratesEntries.add(new Entry(75f, 4));
    ratesEntries.add(new Entry(60f, 5));
    ratesEntries.add(new Entry(0f, 6));

    final List<ILineDataSet> ratesDatasets = new ArrayList<>();
    ratesDatasets.add(createRatesDataset(ratesEntries));

    // prepare data for bar graph
    final BarData periodBarData = new BarData(labels);

    List<BarEntry> periodEntries;

    periodEntries = new ArrayList<>();
    periodEntries.add(new BarEntry(100f, 0));
    periodEntries.add(new BarEntry(100f, 2));
    periodEntries.add(new BarEntry(100f, 4));
    periodEntries.add(new BarEntry(100f, 6));

    BarDataSet periodDataset;

    periodDataset = new BarDataSet(periodEntries, null);
    periodDataset.setColor(Color.parseColor("#ccd2c0ff")); // transparency 80%
    periodDataset.setDrawValues(false);
    periodDataset.setBarSpacePercent(0);
    periodBarData.addDataSet(periodDataset);

    periodEntries = new ArrayList<>();
    periodEntries.add(new BarEntry(100f, 1));
    periodEntries.add(new BarEntry(100f, 3));
    periodEntries.add(new BarEntry(100f, 5));

    periodDataset = new BarDataSet(periodEntries, null);
    periodDataset.setColor(Color.parseColor("#ccc0daff")); // transparency 80%
    periodDataset.setDrawValues(false);
    periodDataset.setBarSpacePercent(0);
    periodBarData.addDataSet(periodDataset);

    // prepare data for combined chart
    final CombinedData data = new CombinedData(labels);
    data.setData(new LineData(labels, ratesDatasets));
    data.setData(periodBarData);

    chart.setData(data);
}

private ILineDataSet createRatesDataset(final List<Entry> entries) {
    final LineDataSet d = new LineDataSet(entries, null);
    d.setColor(Color.BLUE);
    d.setLineWidth(2.5f);
    d.setCircleColor(Color.BLUE);
    d.setCircleRadius(5f);
    d.setFillColor(Color.BLUE);
    d.setDrawCubic(true);
    d.setDrawValues(false);
    d.setValueTextSize(10f);
    d.setValueTextColor(Color.BLUE);
    d.setAxisDependency(YAxis.AxisDependency.LEFT);

    return d;
}

请注意,条形码在Alpha通道中占80%(有关详细信息,请参阅此处:Working JsFiddle)。