美文网首页
MPAndroidChart使用

MPAndroidChart使用

作者: 陶石子 | 来源:发表于2018-03-01 22:36 被阅读0次
QQ截图20180301204355.png

public class ChartsActiviey extends AppCompatActivity implements OnChartValueSelectedListener {
    protected BarChart mChart;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_charts);

        mChart = (BarChart) findViewById(R.id.chart1);

        mChart.setOnChartValueSelectedListener(this);


        mChart.setDrawBarShadow(false);
        // 设置value不在柱形图上面
        mChart.setDrawValueAboveBar(false);


        // 设置出现在图表右下角的说明文字。
        mChart.getDescription().setEnabled(false);
        //设置图表为空时应显示的文字。
        mChart.setNoDataText("暂无数据");
        //设置图表上最大可见绘制值标签的数量。这仅在setDrawValues()启用时才会生效。
        mChart.setMaxVisibleValueCount(60);

        mChart.setPinchZoom(false);

        mChart.setDrawGridBackground(false);

        XAxis xAxis = mChart.getXAxis();
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
        // 设置网格显示
        xAxis.setDrawGridLines(true);
        xAxis.setGranularity(1f);
        xAxis.setLabelCount(13);
        // 设置条形图名称
        xAxis.setValueFormatter(new DayAxisValueFormatter());


        // 左侧数据
        YAxis leftAxis = mChart.getAxisLeft();
        leftAxis.setLabelCount(8, false);
        leftAxis.setValueFormatter(new MyAxisValueFormatter());
        leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART);
        leftAxis.setSpaceTop(15f);
        //设置自定义的最小值。如果设置,则根据提供的数据将不会自动计算该值。
        leftAxis.setAxisMinimum(0f);
        // 设置自定义的最大值。如果设置,则根据提供的数据将不会自动计算该值。
        leftAxis.setAxisMaximum(100f);

        // 不显示right的数据
        mChart.getAxisRight().setEnabled(false);

        // 图列
        Legend l = mChart.getLegend();
        l.setVerticalAlignment(Legend.LegendVerticalAlignment.BOTTOM);
        l.setHorizontalAlignment(Legend.LegendHorizontalAlignment.LEFT);
        l.setOrientation(Legend.LegendOrientation.HORIZONTAL);
        l.setDrawInside(false);
        l.setForm(Legend.LegendForm.SQUARE);
        l.setFormSize(9f);
        l.setTextSize(14f);
        l.setXEntrySpace(4f);


        setData();

    }

    private void setData() {

        ArrayList<BarEntry> barEntries = new ArrayList<>();
        int max = 40;
        int min = 10;
        Random random = new Random();
        for (int i = 0; i < 12; i++) {

            int randomVal1 = random.nextInt(max) % (max - min + 1) + min;
            int randomVal2 = random.nextInt(max) % (max - min + 1) + min;
            int randomVal3 = random.nextInt(20) % (20 - 5 + 1) + 5;

            barEntries.add(new BarEntry(i + 1, new float[]{randomVal1, randomVal2, randomVal3}));
        }

        BarDataSet set = new BarDataSet(barEntries, "");
        set.setDrawIcons(false);
        set.setColors(getColor());
        set.setStackLabels(new String[]{"销量", "库存", "款式数"});

        ArrayList<IBarDataSet> dataSets = new ArrayList<>();
        dataSets.add(set);

        BarData barData = new BarData(dataSets);
        barData.setValueFormatter(new MyValueFormatter());
        barData.setValueTextColor(Color.WHITE);
        barData.setValueTextSize(10f);

        mChart.setData(barData);

        // 设置最多显示几个柱状图
        mChart.setVisibleXRangeMaximum(6);

    }


    private int[] getColor() {
        int stackSize = 3;
        int[] colors = new int[stackSize];
        for (int i = 0; i < colors.length; i++) {
            colors[i] = ColorTemplate.MATERIAL_COLORS[i];
        }
        return colors;
    }


    @Override
    public void onValueSelected(Entry e, Highlight h) {

    }

    @Override
    public void onNothingSelected() {

    }
}
public class DayAxisValueFormatter implements IAxisValueFormatter {

    private String[] mMonths = new String[]{
            "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
    };

    @Override
    public String getFormattedValue(float value, AxisBase axis) {
        int curVlaue = (int) value;
        return mMonths[curVlaue - 1];
    }

}
public class MyAxisValueFormatter implements IAxisValueFormatter
{

    @Override
    public String getFormattedValue(float value, AxisBase axis) {
        return (int)value + "%";
    }
}

public class MyValueFormatter implements IValueFormatter {

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        return (int) value + "%";
    }
}

相关文章

网友评论

      本文标题:MPAndroidChart使用

      本文链接:https://www.haomeiwen.com/subject/grznxftx.html