3

由于 AchartEngine API 的 TimeSeries Construstor 仅将字符串作为参数,并且没有其他参数作为比例参数传递。那么我将如何在两种不同的尺度上使用它

谢谢

4

2 回答 2

1

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

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

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

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

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

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

更好的解决方案 我发现最好只用我自己的 TimeSeries 子类化 XYSeries 并使用必要的构造函数来支持比例组。这是因为 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;
    }
}
于 2013-12-12T01:00:35.353 回答
0

我建议你不要尝试使用TimeSeries多尺度图表。

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

// disable the default labels
renderer.setXLabels(0);
// add your formatted dates, several of these calls
renderer.addXTextLabel(x, "formatted date");
于 2012-10-05T07:28:47.640 回答