使用AchartEngine旋转Android上条形图中显示的实际值

时间:2013-12-05 06:37:42

标签: android bar-chart achartengine

如何旋转显示在achartengine条形图中显示的条形顶部的值。我知道我们可以使用setYLabelsAngle(float angle)旋转Y轴标签,但我想旋转条形顶部显示的实际值。即当您说setDisplayChartValues(boolean display)时显示的值。

我在AchartEngine,AndroidPlot和AFreeChart上搜索过此功能但找不到它。你能给我一个解决方案,还是应该自己使用Canvas和自定义视图来实现这个功能。

PS 我只需要在我的应用中显示BarChart。

1 个答案:

答案 0 :(得分:0)

你不能通过使用渲染器等任何功能来做到这一点,如果你有achartengine库的源代码,你可以编辑它并实现你的目标。

要旋转文本,请更改Barchart类中的drawChartValuesText()而不是XYChart类。 只需将旋转角度放在drawText()函数中的两个位置,如下所示

 protected void drawChartValuesText(Canvas canvas, XYSeries series, SimpleSeriesRenderer renderer,
      Paint paint, List<Float> points, int seriesIndex, int startIndex) {
    int seriesNr = mDataset.getSeriesCount();
    int length = points.size();
    float halfDiffX = getHalfDiffX(points, length, seriesNr);
    for (int i = 0; i < length; i += 2) {
      int index = startIndex + i / 2;
      double value = series.getY(index);
      if (!isNullValue(value)) {
        float x = points.get(i);
        if (mType == Type.DEFAULT) {
          x += seriesIndex * 2 * halfDiffX - (seriesNr - 1.5f) * halfDiffX;
        }
        if (value >= 0) {
          drawText(canvas, getLabel(renderer.getChartValuesFormat(), value), x, points.get(i + 1)
              - renderer.getChartValuesSpacing(), paint, 90);

          //Initially 90 was 0 you can change it according to your requirement

        } else {
          drawText(canvas, getLabel(renderer.getChartValuesFormat(), value), x, points.get(i + 1)
              + renderer.getChartValuesTextSize() + renderer.getChartValuesSpacing() - 3, paint, 90);

        //Initially 90 was 0 you can change it according to your requirement


        }
      }
    }
  }

查看两个地方的drawText()内所做的更改并查看评论。没有其他方法可以实现您的目标。如果它让我知道。