美文网首页
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