MPAndroidChart 2.15使用记录

LineChart

LineChart为MPAndroidChart库中提供用于画折线图的控件。LineChart控件绘制的步骤为: 1. 通过创建一个用于存放X轴值的List集合容器Xlist,并为此List添加自己要绘制的所有X轴上的值。 2. 创建一个用于存放Entry对象的集合容器,Entry为此库提供的类,一个Entry对象对应一个坐标系中的值。3. 创建一个LineDataSet类对象用用于将所有Entry连起来在坐标系中绘制出一条折线。4. 创建一个LineData的对象用于存放LineDataSet。5. 通过findById()对象获得LineChart类的对象,并调用此类的setData()方法将前面创建的LineData数据传进去同于数据填充。

LineChart类

通过LineChart linechart = findViewById(...);创建。此对象是LineChart控件类的对象。

  1. 无数据时显示的文本内容
    lineChart.setNoDataText();

  2. 设置背景颜色
    lineChart.setBackgroundColor();

  3. 是否展示网格线
    lineChart.setDrawGridBackground();

  4. 是否显示边界
    lineChart.setDrawBorders();

  5. 是否可以拖动
    lineChart.setDragEnabled();

  6. 是否有触摸事件
    lineChart.setTouchEnabled();

  7. 设置X和Y轴的动画
    lineChart.animateY();
    lineChart.animateX();

  8. 设置数据填充(尽量放在最后,不然容易出现数据混乱
    lineChart.setData();

  9. 刷新数据
    lineChart.invalidate();

  10. 更新List中数据后使用用于通知LineChart数据已更新
    lineChart.notifyDataSetChanged();

  11. 设置右下角标签显示的内容
    lineChart.setDescription();

  12. 设置边界的的宽度
    lineChart.setBorderWidth();

  13. 设置边界的颜色
    lineChart.setBorderColor();

  14. 设置是否支持手势监听如长按等...
    ineChart.setPinchZoom();

  15. 设置是否允许x和y轴缩放
    lineChart.setScaleEnabled(true);

  16. 设置x轴的最大可见范围,大于此值后不可进一步放大视图
    lineChart.setVisibleXRangeMaximum();

  17. 设置x轴的最小可见范围,超过此值后会被视为不可见(若不滑动的chart的话) lineChart.setVisibleXRangeMinimum();

LineDataSet类

通过 LineDataSet lineDataSet = new LineDataSet(List<Entry>, "显示的描述文本内容");创建。一个LineDataSet代表一条线。此对象可以设置坐标系中折线图中点的大小,颜色,数值的大小等...

  1. 设置折线上的圆点颜色
    lineDataSet.setCircleColor();

  2. 设置折线上的圆点的大小
    lineDataSet.setCircleSize();

  3. 设置折线上的圆点是否是空心
    lineDataSet.setDrawCircleHole();

  4. 设置折线的粗细
    lineDataSet.setLineWidth();

  5. 设置折线上每个点上值的大小
    lineDataSet.setValueTextSize();

  6. 设置折线的线段和数值的颜色
    lineDataSet.setColor();

  7. 设置是否显示折线图填充
    lineDataSet.setDrawFilled();

  8. 设置辅助线的颜色
    lineDataSet.setHighLightColor();

  9. 设置节点是否显示具体值
    lineDataSet.setDrawValues();

  10. 选择某个点的时候高亮显示的指示线
    lineDataSet.enableDashedLine( , , );

  11. 填充可以设置渐变填充一个Drawable,或者仅仅填充颜色
    lineDataSet.setFillColor();

  12. 如果使用的是右坐标轴必须设置这行
    lineDataSet.setAxisDependency();

  13. 取消横向辅助线
    lineDataSet.setDrawHighlightIndicators();

  14. 取消纵向辅助线
    lineDataSet.setDrawVerticalHighlightIndicator()

LineData类

通过 LineData lineData = new LineData(存放x坐标值的List, 坐标系中要画的数据也就是LineDataSet对象);创建。 这个库定义的数据集,类似于适配器,用于给图表存放数据,后使用LineChart对象的setData方法设置数据显示

  1. 设置每个数据点是否显示数值
    lineData.setDrawValues();
Entry类

通过 Entry entry = new Entry(绘制在坐标系中的值对应Y轴, 绘制在坐标系中的位置对应第几个X轴上值,从零开始类似于数组的索引);创建。 此对象常存放于泛型为Entry的List中,然后存入ListDataSet中,构造方法的第二个参数必须能在上面设置的X坐标值List中找到一个Entry对象对应坐标系中一个点List中有几个Entry对象,坐标系中就有几个点。

XAxis类

通过 XAxis xAxis = lineChart.getXAxis(); 创建。此对象可用于控制LineChart控件中的X坐标轴。

  1. 是否隐藏此x坐标轴
    xAxis.setEnabled();

  2. 设置X坐标轴显示的位置,默认在上方
    xAxis.setPosition();

  3. 设置是否显示X轴的线条
    xAxis.setDrawAxisLine();

  4. 设置是否显示X轴发散出去的网格线
    xAxis.setDrawGridLines();
    xAxis.setAvoidFirstLastClipping();

  5. 设置X轴坐标值区间间隔几个数,为0 时,无间隔
    xAxis.setLabelsToSkip();

  6. 自定义x坐标值

xAxis.setValueFormatter(new XAxisValueFormatter() {
            @Override
            public String getXValue(String s, int i, ViewPortHandler viewPortHandler) {
                return s+"分钟";
            }
        });
复制代码
  1. 设置是否显示轴上的刻度
    xAxis.setDrawLabels();

  2. 背景用虚线表格来绘制
    xAxis.enableGridDashedLine( , , );

  3. 设置坐标数值的颜色
    xAxis.setTextColor();

YAxis类

LineChart控件中存在左右两个Y坐标轴,为此MPAndroidChart库提供了分别获得左右两边坐标轴的方法。获得左边Y轴:YAxis yAxisL = lineChart.getAxisLeft(); 获得右边Y轴:YAxis yAxisR = lineChart.getAxisRight(); 此对象可用于控制LineChart控件中的Y坐标轴。

  1. 是否显示此坐标轴
    yAxis.setEnabled();

  2. 设置是否显示Y轴的线条
    yAxis.setDrawAxisLine();

  3. 设置Y坐标的值是否从0开始
    yAxis.setStartAtZero();

  4. 设置坐标Y轴的坐标最小值
    yAxis.setAxisMinValue();

  5. 设置左边Y轴的坐标值最大值
    yAxisL.setAxisMaxValue();

  6. 设置坐标轴绘制在图表内侧
    yAxisL.setPosition();

  7. 设置坐标轴上数值的颜色
    yAxisL.setTextColor();

  8. 设置坐标轴距底部的距离(留白)
    yAxisL.setSpaceBottom();

Legend类

通过 Legend legend = lineChart.getLegend();创建。此类用于控制左下角的图例。

  1. 设置图例的样式(LegendForm)
    legend.setForm();

  2. 设置图例的颜色
    legend.setTextColor();

  3. 设置是否显示图例
    legend.setEnabled();

  4. 设置图例的大小
    legend.setTextSize();

  5. 设置图例最大百分比
    legend.setMaxSizePercent();

  6. 设置图例出现的位置
    legend.setPosition();

  7. 设置LegendForm 的大小
    legend.setFormSize();

  8. 设置Legend 是否自动换行
    legend.setWordWrapEnabled();

  9. 设置在水平轴上 legend-entries 的间隙
    legend.setXEntrySpace();

  10. 设置在垂直轴上 legend-entries 的间隙
    legend.setYEntrySpace();

  11. 设置legend-form 和 legend-label 之间的空间
    legend.setFormToTextSpace();

  12. 设置自定义Legend 的标签和颜色
    legend.setCustom();

  13. 通知数据更新
    legend.notifyDataSetChanged();

  14. 设置自定义数据图例后在调用notifyDataSetChanged()方法后调用此方法重新自动计算
    legend.resetCustom();

简单的绘制流程
/*通过findViewById()获取LineChart控件对象*/
LineChart lineChart = findViewById(R.id.lineChart);
/*Entry对象集合对应折线图上的点*/
List<Entry> entries = new ArrayList<>();
entries.add(new Entry(1f, 0));
entries.add(new Entry(2f, 1));
entries.add(new Entry(3f, 2));
entries.add(new Entry(4f, 3));
entries.add(new Entry(5f, 4));
/*X轴坐标值集合*/
List<String> list = new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
/*对应坐标系中一条折线*/
LineDataSet lineDataSet = new LineDataSet(entries, "温度");
/*用于存放数据*/
LineData data = new LineData(list, lineDataSet);
/*设置数据填充*/
lineChart.setData(data);
/*刷新数据*/
lineChart.invalidate();
复制代码

转载于:https://juejin.im/post/5c4436106fb9a049f3626778

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值