private void drawLeftAxisLabel(Canvas canvas, int position) {
   Paint axisLabelPaint = labelPaints[LEFT];
   String text = getLeftLabel(position);
   if (position == 0) {
     canvas.drawText(text, 0, -axisLabelPaint.ascent(), axisLabelPaint);
   } else if (position == HORIZONTAL_LINE_NUMBER) {
     float y =
         chartView.getContentHeight() + (axisLabelPaint.ascent() + axisLabelPaint.descent()) / 2;
     canvas.drawText(text, 0, y, axisLabelPaint);
   } else {
     float y = position / (float) HORIZONTAL_LINE_NUMBER * chartView.getContentHeight();
     y = y - (axisLabelPaint.ascent() + axisLabelPaint.descent()) / 2;
     canvas.drawText(text, 0, y, axisLabelPaint);
   }
 }
  private void computeLeftAxisMinAndMax() {
    int start = ((KLineChartView) chartView).getCandleStartIndex();
    int end = ((KLineChartView) chartView).getCandleEndIndex();

    if (start < 0) {
      return;
    }

    List<QuoteData> quoteDataList = chartView.getChartData().getQuoteDataList();
    min = quoteDataList.get(start).low;
    max = quoteDataList.get(start).high;

    for (int i = start; i <= end; i++) {
      QuoteData current = quoteDataList.get(i);
      if (min > current.low) {
        min = current.low;
      }
      if (max < current.high) {
        max = current.high;
      }
    }

    min -= (max - min) * 0.03;
    max += (max - min) * 0.03;
  }
  public KLineAxisRenderer(ChartView chartView) {
    this.chartView = chartView;

    labelTextSize = Util.dp2px(chartView.getResources(), LABEL_SIZE);

    for (int i = 0; i < 4; i++) {
      linePaints[i].setColor(lineColor);
      labelPaints[i].setColor(AXIS_LABEL_COLOR_WHITE);
      labelPaints[i].setTextSize(labelTextSize);
    }
  }
  @Override
  public void drawHorizontalLines(Canvas canvas) {
    Paint paint = linePaints[LEFT];
    paint.setColor(borderColor);
    canvas.drawLine(0, 0, chartView.getWidth(), 0, linePaints[LEFT]);

    paint.setColor(lineColor);
    for (int i = 1; i < HORIZONTAL_LINE_NUMBER; i++) {
      float yPos = (i / (float) HORIZONTAL_LINE_NUMBER) * chartView.getContentHeight();
      canvas.drawLine(0, yPos, chartView.getWidth(), yPos, linePaints[LEFT]);
    }

    paint.setColor(borderColor);
    canvas.drawLine(
        0, chartView.getContentHeight(), chartView.getWidth(), chartView.getContentHeight(), paint);
  }
  @Override
  public void drawVerticalLines(Canvas canvas) {
    Paint linePaint = linePaints[BOTTOM];

    linePaint.setColor(borderColor);
    canvas.drawLine(0, 0, 0, chartView.getContentHeight(), linePaint);

    linePaint.setColor(lineColor);
    for (int i = 1; i < VERTICAL_LINE_NUMBER; i++) {
      float x = (i / (float) VERTICAL_LINE_NUMBER) * chartView.getWidth();
      canvas.drawLine(x, 0, x, chartView.getContentHeight(), linePaint);
    }

    linePaint.setColor(borderColor);
    canvas.drawLine(
        chartView.getWidth() - 1,
        0,
        chartView.getWidth() - 1,
        chartView.getContentHeight(),
        linePaint);
  }