笔记-LineChart的实现

251 阅读1分钟

/**

    * 添加统计表数据
    *
    * @param xValues(从小到大排序)
    * @param yValues
    */
   private void initChart(List<Integer> xValues, List<Integer> yValues) {
          mRootView.lineChart.setTouchEnabled(false);
          mRootView.lineChart.getDescription().setEnabled(false);
          mRootView.lineChart.setNoDataText(getString(R.string.no_data));

          List<Entry> values = new ArrayList<>();
          LineDataSet lineDataSet;

          if (xValues.size() != yValues.size() || xValues.size() == 0 || yValues.size() == 0) {
                 return;
          } else {
                 for (int i = 0; i < xValues.size(); i++) {
                        Entry entry = new Entry();
                        entry.setX(xValues.get(i));
                        entry.setY(yValues.get(i));
                        values.add(entry);
                 }
          }

          if (mRootView.lineChart.getData() != null && mRootView.lineChart.getData().getDataSetCount() > 0) {
                 lineDataSet = (LineDataSet) mRootView.lineChart.getData().getDataSetByIndex(0);
                 lineDataSet.setValues(values);
                 mRootView.lineChart.getData().notifyDataChanged();
                 mRootView.lineChart.notifyDataSetChanged();
                 return;
          }

          XAxis xAxis = mRootView.lineChart.getXAxis();
          xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
          xAxis.setAxisLineColor(ContextCompat.getColor(App.getContext(), R.color.color_FFCAD7E1));
          xAxis.setAxisLineWidth(1f);
          xAxis.setDrawGridLines(false);
          xAxis.setTextColor(ContextCompat.getColor(App.getContext(), R.color.color_ffffff));
          xAxis.setTextSize(10);
          xAxis.setValueFormatter(new IAxisValueFormatter() {
                 @Override
                 public String getFormattedValue(float value, AxisBase axis) {
                        return (int) value + getString(R.string.day);
                 }
          });
          xAxis.setEnabled(true);


          YAxis yAxisRight = mRootView.lineChart.getAxisRight();
          yAxisRight.setEnabled(false);

          YAxis yAxisLeft = mRootView.lineChart.getAxisLeft();
          yAxisLeft.setAxisLineColor(ContextCompat.getColor(App.getContext(), R.color.color_FFCAD7E1));
          yAxisLeft.setAxisLineWidth(1f);
          yAxisLeft.setTextColor(ContextCompat.getColor(App.getContext(), R.color.color_ffffff));
          yAxisLeft.setTextSize(10);
          yAxisLeft.setGridColor(ContextCompat.getColor(App.getContext(), R.color.color_FFCAD7E1));
          yAxisLeft.setStartAtZero(true);
          yAxisLeft.setAxisMinimum(0f);
          yAxisLeft.setValueFormatter(new IAxisValueFormatter() {
                 @Override
                 public String getFormattedValue(float value, AxisBase axis) {
                        if (value == 0) {
                               return "";
                        }
                        return (int) value + getString(R.string.ten_thousand);
                 }
          });
          yAxisLeft.setEnabled(true);

          lineDataSet = new LineDataSet(values, "");

          lineDataSet.setDrawIcons(false);
          lineDataSet.setValueTextColor(ContextCompat.getColor(App.getContext(), R.color.color_ffffff));

          lineDataSet.setValueTextSize(10);
          lineDataSet.setColor(Color.TRANSPARENT);
          lineDataSet.setCircleColor(ContextCompat.getColor(App.getContext(), R.color.color_86b6e5));
          lineDataSet.setCircleColorHole(ContextCompat.getColor(App.getContext(), R.color.color_86b6e5));
          lineDataSet.setLineWidth(1f);
          lineDataSet.setCircleRadius(3f);
          lineDataSet.setDrawFilled(true);

          Drawable drawable = ContextCompat.getDrawable(App.getContext(), R.drawable.fade_blue);
          lineDataSet.setFillDrawable(drawable);

          ArrayList<ILineDataSet> dataSets = new ArrayList<ILineDataSet>();
          dataSets.add(lineDataSet);

          LineData data = new LineData(dataSets);
          mRootView.lineChart.setData(data);
   }