【问题标题】:AchartEngine: How to use TimeSeries with two different scalesAchartEngine:如何使用具有两种不同比例的 TimeSeries
【发布时间】:2012-10-05 04:37:56
【问题描述】:

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

谢谢

【问题讨论】:

    标签: android achartengine


    【解决方案1】:

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

    您不能使用 TimeSeries 拥有多个比例组的原因仅仅是因为作者忘记(或觉得没有必要)添加必要的构造函数以允许您设置系列应该属于哪个比例组。 TimeSeries 是 XYSeries 的子类,非常简单(查找源代码here)。它所做的唯一特别的事情是为您提供了一个 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;
        }
    }
    

    【讨论】:

      【解决方案2】:

      我建议您不要尝试将TimeSeries 用于多比例图表。

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

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

      【讨论】:

      • 看起来不错!但我想在我的屏幕上默认保留 7 个日期。有什么建议吗?
      • 您必须监听 Pan 和 Zoom 事件并始终更新标签。删除旧的并添加新的。
      • 如何将平移和缩放与 x 轴限制相关联。我说的是 x 轴最小和最大限制。它最初应该在我的屏幕上从 date1 到 date7 形成。如果我错了,请纠正我。感谢丹的合作
      • 它无法解决我的 x 轴限制问题。你能给我示例代码吗?
      • 您可以使用 renderer.getXAxisMin() 和 ...Max() 读取 x 轴范围。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-26
      • 2013-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多