2015-05-28 77 views
2

设计师送我的图表看起来像这样:如何使MPAndroidChart背景像这样?

enter image description here

但我不知道如何使背景像,becase的这个图表背景有,你可以看到两种不同的颜色,对于每一个变化图表项目。

这里是我的结果

enter image description here

可能使图表背景的设计师制作的呢?

回答

0

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

你提到了一个绘制图的技巧。在组合图表中,绘制具有最大值的条形图并根据需要设置颜色。

+0

在您添加图表的链接看起来不像我的。你能为我的背景添加示例代码吗? – Zookey

+0

您可以使用两个BarDataSet绘制条形图并为这些组赋予不同的颜色。另外,将条之间的间距设置为0f。你会得到相同的背景。 – abhinav

+0

编写代码示例,我会接受你的回答。 – Zookey

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%(详细信息请看这里:How to make a background 20% transparent on Android)。

相关问题