AchartEngine:如何使用具有两种不同比例的时间序列

时间:2012-10-05 04:37:57

标签: android achartengine

作为AchartEngine API的TimeSeries Construstor,只接受字符串作为参数,并且没有其他参数作为缩放参数传递。那么我将如何使用两种不同的尺度

由于

2 个答案:

答案 0 :(得分:1)

我想提出一个更简单的解决方案。

您不能在TimeSeries中拥有多个比例组的原因仅仅是因为作者忘记了(或者根本不需要)添加必要的构造函数以允许您设置该系列应属于哪个比例组。 TimeSeries是XYSeries的子类,非常简单(找到源here)。它唯一特别的功能是为您提供一个采用Date而不是double的add方法。实际上,TimeSeries中的add方法只会进行以下调用,该调用将x值作为毫秒时间传递:

super.add(x.getTime(), y);

因此,完成您想要做的最简单的方法是使用TimeChart,但不使用TimeSeries,而是使用XYSeries并以毫秒为单位传递日期(就像TimeSeries一样!)。使用这种方法,您不需要使用自定义x轴标签。

另一种方法可能是编写自己的XYSeries子类。

希望将来可以将必要的构造函数添加到TimeSeries中,因此这些都不是必需的。

更好的解决方案 我发现最好只使用我自己的TimeSeries子类XYSeries,并使用必要的构造函数来支持scale组。这是因为在XYSeries中有一个填充值在TimeSeries中被覆盖。因此,使用XYSeries时间可能会因填充值而出现问题。这是我正在使用的简单子类(注意getPadding方法返回1,你需要有):

    private class MyTimeSeries extends XYSeries {

    public MyTimeSeries(String title, int scaleNumber) {
        super(title, scaleNumber);
    }

    public synchronized void add(Date x, double y) {
        super.add(x.getTime(), y);
    }

    @Override
    protected double getPadding(double x) {
        return 1;
    }
}

答案 1 :(得分:0)

我建议您不要尝试使用TimeSeries进行多尺度图表制作。

您最好构建一个常规的多尺度折线图,在X轴上设置时间戳并设置自定义标签。

// disable the default labels
renderer.setXLabels(0);
// add your formatted dates, several of these calls
renderer.addXTextLabel(x, "formatted date");