解
我不必使用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轴标签不同,但我还没有更好的图片):
最后,以下屏幕截图显示了曲线在显示时的外观:
为了让用户能够比较曲线,我锁定了y轴变焦。
非常感谢任何帮助。提前谢谢!
答案 0 :(得分:1)
您是否考虑过pan选项?
使用此选项,您可以限制轴最大值,并且图表将在启动时显示重要数据,而用户可以向左或向右滚动(无论您有哪些重要数据点)。
您需要做的就是:
希望这有帮助, 欢呼声。
答案 1 :(得分:0)
我不必使用XYMultipleSeriesRendererInstance.setInitialRange()
,而是使用XYMultipleSeriesRendererInstance.setXAxisMin()
和XYMultipleSeriesRendererInstance.setXAxisMax()
来设置初始x值。
double xMinValue = ...;
double xMaxValue = ...;
currentDatasetRenderer.setXAxisMin(xMinValue);
currentDatasetRenderer.setXAxisMax(xMaxValue);