首页 > 解决方案 > 如何使用单条字符和单线生成组合图

问题描述

我想创建下面的图像,比如组合图,我已经参考了https://github.com/PhilJay/MPAndroidChart

在此处输入图像描述

他们提到的代码不能生成这个图?

有人可以帮我吗?

标签: androidbar-chart

解决方案


按照下面的例子:

 CombinedData data = new CombinedData();
    data.setData(barData());
    data.setData(lineData());

    combinedChart.setData(data);
    combinedChart.getDescription().setText("");

    Legend legend = combinedChart.getLegend();
    legend.setStackSpace(5);

    // xAxis customization
    XAxis xAxis = combinedChart.getXAxis();
    xAxis.setGranularity(1f);
    xAxis.setGranularityEnabled(true);
    xAxis.setCenterAxisLabels(false);
    xAxis.setDrawGridLines(false);
    xAxis.setAxisMaximum(barData().getXMax() + 1);
    xAxis.setAxisMinimum(barData().getXMin() - 1);
    xAxis.setPosition(XAxis.XAxisPosition.BOTH_SIDED);
    xAxis.setValueFormatter(new IndexAxisValueFormatter(getXAxisValues()));

    YAxis leftAxis = combinedChart.getAxisLeft();
    YAxis rightAxis = combinedChart.getAxisRight();

combinedChart.animateY(1000);
        legend.setTextColor(Color.BLACK);
        xAxis.setTextColor(Color.BLACK);
        leftAxis.setTextColor(Color.BLACK);
        rightAxis.setTextColor(Color.BLACK);

        combinedChart.getDescription().setText("Last 6 Months Data");
        combinedChart.getDescription().setTextSize(12);
        combinedChart.setDrawMarkers(true);
        combinedChart.setMarker(markerView(context));
        combinedChart.getAxisLeft().addLimitLine(lowerLimitLine(2,"Lower Limit",2,12,getColor("defaultOrange"),getColor("defaultOrange")));
        combinedChart.getAxisLeft().addLimitLine(upperLimitLine(5,"Upper Limit",2,12,getColor("defaultGreen"),getColor("defaultGreen")));

        combinedChart.getXAxis().setGranularityEnabled(true);
        combinedChart.getXAxis().setGranularity(1.0f);
        combinedChart.getXAxis().setLabelCount(data.getEntryCount());

private BarData barData()
{
    ArrayList<BarEntry> group1 = new ArrayList<BarEntry>();
    group1.add(new BarEntry(0, 1));
    group1.add(new BarEntry(1, 2));
    group1.add(new BarEntry(2, 3));
    group1.add(new BarEntry(3, 4));
    group1.add(new BarEntry(4, 3));
    group1.add(new BarEntry(5, 6));

    BarDataSet barDataSet = new BarDataSet(group1, "Bars");
    barDataSet.setAxisDependency(YAxis.AxisDependency.RIGHT);
    barDataSet.setColors(ColorTemplate.COLORFUL_COLORS);
    barDataSet.setValueTextSize(10);

    BarData barData = new BarData(barDataSet);
    barData.setBarWidth(0.9f);

    barDataSet.setValueTextColor(Color.BLACK);
    return barData;
}

 private LineData lineData()
{
    ArrayList<Entry> line = new ArrayList<Entry> ();
    line.add(new Entry(0, 4));
    line.add(new Entry(1, 5));
    line.add(new Entry(2, 2));
    line.add(new Entry(3, 3));
    line.add(new Entry(4, 1));
    line.add(new Entry(5, 2));

    LineDataSet lineDataSet = new LineDataSet(line, "Line");
    lineDataSet.setAxisDependency(YAxis.AxisDependency.LEFT);

    lineDataSet.setLineWidth(2);
    lineDataSet.setMode(LineDataSet.Mode.CUBIC_BEZIER);
    lineDataSet.setHighlightEnabled(true); // allow highlighting for DataSet

    // set this to false to disable the drawing of highlight indicator (lines)
    lineDataSet.setDrawHighlightIndicators(true);
    lineDataSet.setHighLightColor(Color.RED);
    lineDataSet.setValueTextSize(10);
    lineDataSet.setCircleRadius(6);
    lineDataSet.setCircleHoleRadius(3);
    LineData lineData = new LineData(lineDataSet);

    lineDataSet.setColors(Color.DKGRAY);
    lineDataSet.setValueTextColor(Color.BLACK);
    lineDataSet.setCircleColorHole(Color.DKGRAY);
    lineDataSet.setCircleColor(Color.CYAN);


    return lineData;
}

其中 combineChart 是您的图表视图。


推荐阅读