作为AchartEngine API的TimeSeries Construstor,只接受字符串作为参数,并且没有其他参数作为缩放参数传递。那么我将如何使用两种不同的尺度
由于
答案 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");