MPAndroidChart LineChart使用

4,136 阅读2分钟
原文链接: mp.weixin.qq.com

MPAndroidChart是开源的一个Android图标库,效果酷炫,内部包括了LineChart(折线图),BarChart(饼状图),CombinedChart(组合图),PieChart(饼状图),ScatterChart(散点图),BubbleChart(气泡图),Stacked BarChart(堆积条形图),CandleStickChart(蜡烛图),CubicLineChart(立方折线图),RadarChart(雷达图),RealtimeChart(实时折线图),SinusBarChart(正弦柱状图)等等。

集成

  • 添加到项目的 build .gradle

  1. allprojects {

  2.    repositories {

  3.        maven { url "https://jitpack.io" }

  4.    }

  5. }

  • 添加到模块的 build .gradle

  1. dependencies {

  2.    implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'

  3. }

使用

  • 在布局文件xml中添加

  1. <com.github.mikephil.charting.charts.LineChart

  2.          android:id="@+id/wh_detail_chart"

  3.          android:layout_width="match_parent"

  4.          android:layout_height="match_parent"

  5.          android:layout_below="@+id/wh_detail_title"

  6.          android:layout_marginBottom="@dimen/distance_8"

  7.          />

  • 配置

  1. /**

  2.   * 配置图表显示样式

  3.   * @param size x轴label个数

  4.   * @param wareHouseInfos 图表数据

  5.   */

  6.  public void chart(int size, List<WareHouseInfo> wareHouseInfos) {

  7.    //设置des

  8.    mBinding.whDetailChart.getDescription().setEnabled(false);

  9.    // 绘制网格线

  10.    mBinding.whDetailChart.setDrawGridBackground(false);

  11.    // 绘制边框

  12.    mBinding.whDetailChart.setDrawBorders(false);

  13.    // 设置legend,后面描述

  14.    mBinding.whDetailChart.getLegend().setEnabled(false);

  15.    // 当没有图标数据的时候显示

  16.    mBinding.whDetailChart.setNoDataText("库区储备明细图");

  17.    // 设置x轴样式

  18.    XAxis xAxis = mBinding.whDetailChart.getXAxis();

  19.    xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);

  20.    xAxis.setDrawGridLines(false);

  21.    xAxis.setDrawAxisLine(false);

  22.    xAxis.setAxisMinimum(1f);

  23.    xAxis.setLabelCount(size, true);

  24.    xAxis.setAxisMaximum(size);

  25.    xAxis.setAxisLineColor(R.color.colorAccent);

  26.    List<String> value = Lists.newArrayList();

  27.    for (int i = 0; i <= size; i++) {

  28.      value.add(i + "仓");

  29.    }

  30.    //设置x轴label

  31.    xAxis.setValueFormatter(new YAxisValueFormatter(value));

  32.    // 设置y轴样式

  33.    YAxis leftAxis = mBinding.whDetailChart.getAxisLeft();

  34.    leftAxis.setLabelCount(10, true);

  35.    leftAxis.setAxisMinimum(0f);

  36.    YAxis rightAxis = mBinding.whDetailChart.getAxisRight();

  37.    rightAxis.setEnabled(false);

  38.    for (int i = 0; i < 100; i++) {

  39.      if (i % 5 == 0) {

  40.        mChartData = generateDataLine(wareHouseInfos);

  41.        mBinding.whDetailChart.setData(mChartData);

  42.      }

  43.    }

  44.    // 以动画的方式绘制

  45.    mBinding.whDetailChart.animateX(750);

  46.  }

  • 绘制线条

  1. /**

  2.   * 绘制线条

  3.   *

  4.   * @param wareHouseInfos 图表数据

  5.   */

  6.  private LineData generateDataLine(Integer count, List<WareHouseInfo> wareHouseInfos) {

  7.    // lineChart Entry列表

  8.    List<Entry> e1 = Lists.newArrayList();

  9.    for (int i = 0; i < count; i++) {

  10.      // 将数据填充到每个y值

  11.      e1.add(new Entry(i, wareHouseInfos.get(i).getAuthorizedCapacity() / 1000));

  12.    }

  13.    LineDataSet d1 = new LineDataSet(e1, "存储明细");

  14.    // 绘制线宽

  15.    d1.setLineWidth(2.5f);

  16.    // 绘制entry圆形

  17.    d1.setCircleRadius(4.5f);

  18.    // 配置是否在Entry上画值

  19.    d1.setDrawValues(true);

  20.    // 设置线的颜色

  21.    d1.setColors(new int[] {

  22.        R.color.colorAccent, R.color.colorAccent, R.color.colorAccent, R.color.colorAccent

  23.    }, getContext());

  24.    d1.setCircleColors(new int[] {

  25.        R.color.colorAccent, R.color.colorAccent, R.color.colorAccent, R.color.colorAccent

  26.    }, getContext());

  27.    // 设置line模式

  28.    d1.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER);

  29.    ArrayList<ILineDataSet> sets = new ArrayList<>();

  30.    sets.add(d1);

  31.    return new LineData(sets);

  32.  }

显示样式

打完收工,下次写 BarChart