-->

AchartEngine:如何使用的TimeSeries与两个不同的尺度(AchartEngine:

2019-09-23 13:56发布

作为AchartEngine API的TimeSeries的Construstor只拿字符串作为参数,并没有其他的参数传递的规模说法。 因此,如何我会用两种不同的尺度使用

谢谢

Answer 1:

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

你最好建立一个定期多尺度线图,在X轴上设置时间戳和设置您的自定义标签。

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


Answer 2:

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

你不能拥有多个规模组,TimeSeries的原因很简单,因为作者忘记(或没有觉得有必要),添加必要的构造函数允许您设置的系列应该属于哪个刻度小组。 TimeSeries的是XYSeries的子类,是令人难以置信的简单(寻源在这里 )。 它做的唯一特殊的是给你一个add方法,需要一个日期,而不是双。 事实上,在的TimeSeries add方法只是使下面的调用,其通过在x值作为毫秒时间:

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

所以,最简单的方法来完成你想做的事是使用时间图,但不是使用TimeSeries的,使用XYSeries,只是通过您的日期作为毫秒(就像TimeSeries的呢!)。 通过这种方法,你不需要使用自定义x轴标签混乱。

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

但愿,必要的构造函数将被添加到的TimeSeries在未来使这一切都不是必要的。

更好的解决办法 ,我发现,这是最好只子类XYSeries与我自己的必要的构造以支持规模组的TimeSeries。 这是因为在其在的TimeSeries覆盖了XYSeries填充值。 因此,使用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;
    }
}


文章来源: AchartEngine: How to use TimeSeries with two different scales