achartengine时间表设定初始范围

时间:2015-04-01 12:12:27

标签: android achartengine

我不必使用setInitialRange(),而是使用setXAxisMin()setXAxisMax()来设置初始x值。我觉得有点混乱。

原始问题

我目前正在开展一个涉及acharteninge图书馆的项目,用于绘制时间图,这个图表目前非常出色。用户可以通过单独的按钮在各种图形之间切换(一个XYMultipleSeriesDataset加上每个图形一个TimeSeries)。到目前为止,achartengine在显示图表时显示所有x值。

但是,当显示图表时,我被要求仅显示在前三个小时内捕获的数据,因为此信息最相关。尽管如此,用户仍应能够滚动到前三个小时后捕获的数据,这意味着不能选择限制x轴最大值。

例如:有两条曲线。第一条曲线是使用4小时内捕获的数据绘制的,而第二条曲线是根据18小时内捕获的数据创建的。

在当前版本中,我的程序最初显示图表的所有数据,这些数据显示意味着第一条曲线显示了三小时非常相关的数据,而1小时也显示了不太重要的信息。第二条曲线的“比率”为3到15(非常重要的数据与常规数据)。因此,当用户比较两条曲线时,会显示不同数量的高重要信息,这使得用户难以比较这些数据,因为他必须手动调整缩放。

编辑01.04.2015 15:46

为了设置初始范围,我使用XYMultipleSeriesRenderer实例的方法setInitialRange(double[] initialRange);,它根本不影响图形。下面你可以看到我的陈述(currentlyProcessedCurve.getRecordStart()是Joda的DateTime的一个实例,而且它是第一个显示点的x值):

public static final int CHART_X_AXIS_INITIAL_MAX = 3;
public static final int CHART_MARGIN_PAN = 45;
...
double[] initialRange = { currentlyProcessedCurve.getRecordStart().minusMinutes(ApplicationSettings.CHART_MARGIN_PAN).toDate().getTime(), currentlyProcessedCurve.getRecordStart().plusHours(ApplicationSettings.CHART_X_AXIS_INITIAL_MAX).toDate().getTime(), 0, 600 };
currentDatasetRenderer.setInitialRange(initialRange);

TIDE(编辑结束)

下面的屏幕截图大致显示了曲线最初应该如何显示(只是为了说清楚:请仅考虑图形的形状,因为它们看起来应该相同 - >我想说的是:我知道两个截图的x轴和y轴标签不同,但我还没有更好的图片):

desired initial range

最后,以下屏幕截图显示了曲线在显示时的外观:

current initial range

为了让用户能够比较曲线,我锁定了y轴变焦。

非常感谢任何帮助。提前谢谢!

2 个答案:

答案 0 :(得分:1)

您是否考虑过pan选项?

使用此选项,您可以限制轴最大值,并且图表将在启动时显示重要数据,而用户可以向左或向右滚动(无论您有哪些重要数据点)。

您需要做的就是:

  • 为您需要的轴启用平移
  • 设置平移限制(因此用户无法滚动到最后一个数据点)

希望这有帮助, 欢呼声。

答案 1 :(得分:0)

我不必使用XYMultipleSeriesRendererInstance.setInitialRange(),而是使用XYMultipleSeriesRendererInstance.setXAxisMin()XYMultipleSeriesRendererInstance.setXAxisMax()来设置初始x值。

double xMinValue = ...;
double xMaxValue = ...;
currentDatasetRenderer.setXAxisMin(xMinValue);
currentDatasetRenderer.setXAxisMax(xMaxValue);