achartengine 时间图表设置初始范围
achartengine time chart set initial range
解决方案
我不得不使用 setXAxisMin()
和 setXAxisMax()
来设置初始 x 值,而不是使用 setInitialRange()
。我觉得有点混乱。
原始问题
我目前正在从事一个涉及 acharteninge 库的项目,用于绘制时间图,到目前为止效果很好。用户可以通过单独的按钮在各种图形之间切换(每个图形一个 XYMultipleSeriesDataset 加上一个 TimeSeries)。到目前为止,图表引擎在显示图形时会显示所有 x 值。
但是,当显示图表时,我被要求仅显示前三个小时捕获的数据,因为这些信息最相关。尽管如此,用户仍然应该能够滚动到前三个小时后捕获的数据,这意味着限制 x 轴最大值不是一个选项。
例如:有两条曲线。第一条曲线是使用 4 小时内捕获的数据绘制的,而第二条曲线是根据 18 小时内捕获的数据创建的。
在当前版本中,我的程序最初显示图表的所有数据,这意味着第一条曲线显示了三个小时的非常相关的数据,同时也显示了 1 小时不太重要的信息。第二条曲线的 "ratio" 是 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);
潮汐(编辑结束)
下面的屏幕截图大致显示了曲线最初的样子(为了清楚起见:请只考虑图形的形状,因为它们看起来应该相等 --> 我想说的是:我知道两张截图的x轴和y轴标签不同,但我还没有更好的图片):
desired initial range
最后,以下屏幕截图显示了曲线在显示时的样子:
为了让用户能够比较曲线,我锁定了 y 轴缩放。
非常感谢任何帮助。提前致谢!
您是否考虑过平移选项?
使用此选项,您可以限制轴最大值,图表将在开始时显示重要数据,同时用户可以向左或向右滚动(无论您有不太重要的数据点)。
您只需:
- 为您需要的轴设置平移
- 设置平移限制(这样用户就不能滚动到最后一个数据点)
希望这对您有所帮助,
干杯。
我不得不使用 XYMultipleSeriesRendererInstance.setXAxisMin()
和 XYMultipleSeriesRendererInstance.setXAxisMax()
.
来设置初始 x 值,而不是使用 XYMultipleSeriesRendererInstance.setInitialRange()
double xMinValue = ...;
double xMaxValue = ...;
currentDatasetRenderer.setXAxisMin(xMinValue);
currentDatasetRenderer.setXAxisMax(xMaxValue);
解决方案
我不得不使用 setXAxisMin()
和 setXAxisMax()
来设置初始 x 值,而不是使用 setInitialRange()
。我觉得有点混乱。
原始问题
我目前正在从事一个涉及 acharteninge 库的项目,用于绘制时间图,到目前为止效果很好。用户可以通过单独的按钮在各种图形之间切换(每个图形一个 XYMultipleSeriesDataset 加上一个 TimeSeries)。到目前为止,图表引擎在显示图形时会显示所有 x 值。
但是,当显示图表时,我被要求仅显示前三个小时捕获的数据,因为这些信息最相关。尽管如此,用户仍然应该能够滚动到前三个小时后捕获的数据,这意味着限制 x 轴最大值不是一个选项。
例如:有两条曲线。第一条曲线是使用 4 小时内捕获的数据绘制的,而第二条曲线是根据 18 小时内捕获的数据创建的。
在当前版本中,我的程序最初显示图表的所有数据,这意味着第一条曲线显示了三个小时的非常相关的数据,同时也显示了 1 小时不太重要的信息。第二条曲线的 "ratio" 是 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);
潮汐(编辑结束)
下面的屏幕截图大致显示了曲线最初的样子(为了清楚起见:请只考虑图形的形状,因为它们看起来应该相等 --> 我想说的是:我知道两张截图的x轴和y轴标签不同,但我还没有更好的图片):
desired initial range
最后,以下屏幕截图显示了曲线在显示时的样子:
为了让用户能够比较曲线,我锁定了 y 轴缩放。
非常感谢任何帮助。提前致谢!
您是否考虑过平移选项?
使用此选项,您可以限制轴最大值,图表将在开始时显示重要数据,同时用户可以向左或向右滚动(无论您有不太重要的数据点)。
您只需:
- 为您需要的轴设置平移
- 设置平移限制(这样用户就不能滚动到最后一个数据点)
希望这对您有所帮助, 干杯。
我不得不使用 XYMultipleSeriesRendererInstance.setXAxisMin()
和 XYMultipleSeriesRendererInstance.setXAxisMax()
.
XYMultipleSeriesRendererInstance.setInitialRange()
double xMinValue = ...;
double xMaxValue = ...;
currentDatasetRenderer.setXAxisMin(xMinValue);
currentDatasetRenderer.setXAxisMax(xMaxValue);