androidplot双刻度XY,范围刻度不独立

时间:2017-06-02 23:33:59

标签: android androidplot

回到0.9.8我创建了2个叠加的图,其中一个具有范围图例左边,另一个右边是一个很好的对称设置

根据网格和域标签的相同颜色指示选择哪一面,范围标签和范围网格与此面对齐,相反的范围标签及其划分根据其原始设置但不排队与网格相关但仍然提供了关于网格的值的一些指示

如上所述,网格符合并排列到选定的一侧

现在在1.4.3中我有2个范围的标签集可用,但只有一个gobal设置为范围网格,这很好,但也适用于范围标签

Plot.setRangeStep (StepMode.INCREMENT_BY_VAL, div) ;

我认为这是正确的吗?

现在我在全局网格线上排列了未选择的范围标签,并且所有小数分数值和奇怪间距的分区看起来很糟糕

这个解决方案可能会使单个情节对我无用

我使用2个情节没有问题,但是有一个很大的plot.redraw惩罚2个情节,我的设置已经没有我想要的那么快

我可能有2个情节,第二个只提供网格和正确的范围传奇......这种不对称的设置似乎变得一团糟

任何建议都非常受欢迎...如果新版本(1.4.5)有修复,那么我现在不需要这个修复,因为整个项目至少需要花费几个月而且我可以实现它...只是完成了bt数据采集和绘图框架,最后10%总是花费90%的时间;)

pict examples

dual plot 0.9.8 left blue range is selected, domain and grid are also blue ... right magenta range has non fractured labels, but doesn't line up which is fine

single plot 1.4.3 right green range selected, domain and grid are also green ... left red range has fractured labels (awful) but lines up which is not so important since un-aligned grid provides some guideline

2 个答案:

答案 0 :(得分:0)

你的观察是正确的,虽然1.x.x允许多个轴标签(例如,同时在左右两侧),但它们必须共享相同的网格步进。

我注意到你在两张图片中应用了不同的步进。这是故意的吗?我假设你已经normalizing your values,因为左/右标度非常不同但正确显示(除了左边不需要的分数)。在如何计算边界的情况下,如果他们得到动态调整等,就不知道更多关于您的用例的情况。一个天真的建议可能是尝试将步骤数量更改为均匀分配到两个范围内的事物。您也可以通过调整绘图的最小/最大范围来完成同样的事情。

答案 1 :(得分:0)

最后似乎我再次使用1.4.3

我现在有一个主图,左边有一个范围图例,左边是连接范围网格,底部是域网格的域图例...所有系列数据也在主图中处理...这个单个绘图绘制所有系列数据图,与2个单独的系列数据图相比,重绘速度更快

然后我有第二个图,右边有一个范围加右边连接范围网格

这两个图在物理上与第二个图形重叠,其中一个图像被设置为透明或者被忽略(隐藏)以覆盖主图

仅显示所选边的范围网格,而另一边为空

gw.setRangeGridLinePaint (null) ;

对于rangetep设置我有选择地使用两个图

if (left) {
  more code ...
  PlotL.setRangeStep (StepMode.INCREMENT_BY_VAL, div) ;
} else {
  more code ...
  PlotR.setRangeStep (StepMode.INCREMENT_BY_VAL, div) ;
}

回答有关规范化数据的问题:

我将所有范围设置为0.0到1000.0非常容易,并相应地缩放提供的数据,使其符合每个系列的最小和最大预期值... eSzeX = 500和eSzeY = 1000

PlotL.setDomainBoundaries (0, eSzeX, BoundaryMode.FIXED) ;
PlotL.setRangeBoundaries  (0, eSzeY, BoundaryMode.FIXED) ;
PlotR.setRangeBoundaries  (0, eSzeY, BoundaryMode.FIXED) ;

我需要重新评估500个x轴数据点,这些数据点使cpu在6个系列数据图中非常繁忙并且减慢了一些事情

...每个系列在XYSeries getX(int idx)实现中都有自己的最终缩放,只有一个乘法和加法线性偏移

我不是天才,相同的数据结构需要以类似的方式在桌面解决方案的QT下使用QWT绘图

主要数据预处理在JNI包装器共享代码中与QT实现进行处理

系列数据数组包含大量数据点,具体取决于日志文件的大小,但只显示500个,并且还通过简单的JNI访问例程处理索引...所有数据特定信息都包含在C ++代码与QT和QWT代码兼容,无需在java中重写

滚动并不像我想的那样顺畅,但比0.9.8下的双重情节要好得多,但我现在没有时间进行优化并且已经完成了一些

如果可以避免这种复杂的设置并且androidplot具有类似的内置能力,那将是非常好的...也许它通过子类或类似的技术,但没有示例我不知道在哪里看或该怎么做

我能够使用

private class LabelRendererY extends LineLabelRenderer { ... }

玩标签数据和位置处理...我很幸运能在某个地方找到一个例子

在干燥的开源软件沙漠中谋生是非常困难的

感谢您的回复尼克......我以后可能会有更多问题

现在我没有弄乱单独的数据系列传说因为我让我很忙