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閱讀 134,993評論 19 139
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,259評論 4 61
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,598評論 25 708
  • 做好自己 凡是讓自己心安的事情盡管去做,趁一切都來得及,多做好事善事,別去想結果,結果交給上天。這樣,做事會和你高...
    圖圖媽媽小麗閱讀 214評論 0 0
  • 普洱茶餅大如盤, 放在大廳招人眼。 笑將兒子邀一處, 茶餅勘比肚子圓。 肚大能容天下事, 茶餅越陳越值錢。
    且行且珍惜知足常樂閱讀 1,174評論 4 8