由于 AchartEngine API 的 TimeSeries Construstor 仅将字符串作为参数,并且没有其他参数作为比例参数传递。那么我将如何在两种不同的尺度上使用它
谢谢
由于 AchartEngine API 的 TimeSeries Construstor 仅将字符串作为参数,并且没有其他参数作为比例参数传递。那么我将如何在两种不同的尺度上使用它
谢谢
我想提出一个更简单的解决方案。
您不能使用 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;
}
}
我建议你不要尝试使用TimeSeries
多尺度图表。
您最好构建一个常规的多比例折线图,在 X 轴上设置时间戳并设置您的自定义标签。
// disable the default labels
renderer.setXLabels(0);
// add your formatted dates, several of these calls
renderer.addXTextLabel(x, "formatted date");