Android Chart框架 MPAndroidChart学习笔记5_折线图

Android Chart框架 MPAndroidChart学习笔记5_折线图


点击这里查看项目源码

1.基本数据的设置

1.1 Entry类

    public Entry(float x, float y) { ... }

可以理解为一个Enery就是坐标轴上的一个数据点

1.2 LineDataSet类

    public LineDataSet(List<Entry> entries, String label) { ... }

既然是Entry数据点组成的集合,可以理解为表示数据的线

1.3 LineData

    /** List constructor */
    public LineData(List<ILineDataSet> sets) { ... }

可以理解为描述chart数据的类

1.3 装载数据

    public void setData(ChartData data) { ... }

调用chart的setData()方法来装载数据

2.装载数据示例

2.1 使用Entry构成一条数据线

    List<Entry> valsComp1 = new ArrayList<Entry>();
    List<Entry> valsComp2 = new ArrayList<Entry>();

    Entry c1e1 = new Entry(0f, 100000f);
    valsComp1.add(c1e1);
    Entry c1e2 = new Entry(1f, 140000f);
    valsComp1.add(c1e2);
    ...

    Entry c2e1 = new Entry(0f, 130000f);
    valsComp2.add(c2e1);
    Entry c2e2 = new Entry(1f, 115000f); 
    valsComp2.add(c2e2);
    ...

2.2 设置DataSet

    LineDataSet setComp1 = new LineDataSet(valsComp1, "Company 1");
    setComp1.setAxisDependency(AxisDependency.LEFT);
    LineDataSet setComp2 = new LineDataSet(valsComp2, "Company 2");
    setComp2.setAxisDependency(AxisDependency.LEFT);

通过setAxisDependency()来设置描述数据的坐标轴是使用左边Y轴还是右边Y轴

2.3 将数据装载到chart

    // use the interface ILineDataSet
    List<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();
    dataSets.add(setComp1);
    dataSets.add(setComp2);

    LineData data = new LineData(dataSets);
    mLineChart.setData(data);
    mLineChart.invalidate(); // refresh

3 在X轴添加坐标描述

正常情况下X轴的标签描述就是数字,但是很多情况我们都需要去自定义修改,我们可以使用IAxisValueFormatter接口来自定义X轴,下面是一个例子:

    final String[] quarters = new String[] { "Q1", "Q2", "Q3", "Q4" };
    
    IAxisValueFormatter formatter = new IAxisValueFormatter() {

        @Override
        public String getFormattedValue(float value, AxisBase axis) {
            return quarters[(int) value];
    }

        // we don't draw numbers, so no decimal digits needed
        @Override
        public int getDecimalDigits() {  return 0; }
    };

    XAxis xAxis = mLineChart.getXAxis();
    xAxis.setGranularity(1f); // minimum axis-step (interval) is 1
    xAxis.setValueFormatter(formatter);

4 对数据点Entries进行排序

    List<Entry> entries = ...;
    Collections.sort(entries, new EntryXComparator());
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,246评论 19 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,283评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,385评论 25 709
  • 做好自己 凡是让自己心安的事情尽管去做,趁一切都来得及,多做好事善事,别去想结果,结果交给上天。这样,做事会和你高...
    图图妈妈小丽阅读 216评论 0 0
  • 普洱茶饼大如盘, 放在大厅招人眼。 笑将儿子邀一处, 茶饼勘比肚子圆。 肚大能容天下事, 茶饼越陈越值钱。
    且行且珍惜知足常乐阅读 1,183评论 4 8