【问题标题】:Negative Barchart with Androidplot带有 Androidplot 的负条形图
【发布时间】:2014-08-19 21:43:57
【问题描述】:

我正在使用Androidplot 库来绘制条形图以显示某些内容。 我的值的范围是 -40 到 +40

如何将条形图绘制到负侧?我只想将零在中间的 y 轴上居中,如果值是负值,则条形应该向上或向下增长。我的酒吧从下限向上增长。它应该如下所示:

【问题讨论】:

  • 我正在尝试用 Android 绘图绘制一个基本的条形图,您是否有一个基本的示例代码可以做到这一点?

标签: android bar-chart androidplot


【解决方案1】:

这对我有用:

plot.centerOnRangeOrigin(0);

plot.setRangeLowerBoundary(0,BoundaryMode.AUTO);

其中 plot 是 XYPlot 的一个实例。

【讨论】:

    【解决方案2】:

    Androidplot 0.6.2最近添加了负条支持;您需要使用latest development version 来获取它(它非常稳定)。

    一旦您拥有正确版本的 Androidplot,您就可以使用 Maria Reina 的建议来启用负值显示。以下是我在下面的屏幕截图中的操作方式:

    plot.setUserRangeOrigin(0);
    plot.setRangeBoundaries(0, BoundaryMode.AUTO, 0,BoundaryMode.AUTO);
    

    注意: 目前存在一个错误,即如果您使用具有 2 个或更多系列且有负条的叠加模式,则负条的叠加顺序会颠倒,从而导致较小的负值在条形组被较大的条形组所掩盖。如果您的目标只是重现上面的图像,那么您应该没问题。

    【讨论】:

    • 非常感谢,我真的需要这个功能,但不明白为什么在使用 0.6.1 时它不起作用。
    • 稍微精确一点:BoundaryMode.AUTO 在这里不是强制性的。当您需要修复边界时,您也可以使用 BoundaryMode.FIXED,例如 plot.setRangeBoundaries(min, max, BoundaryMode.FIXED);,其中 min 是否为负值,这仍然有效。
    • @Nick 在最近的 jar 文件中进行了更改以使其不再起作用?我下载了最新的 AndroidPlot 0.6.2 (androidplot-core-0.6.2-SNAPSHOT),但我无法让 centerOnRangeOrigin 按预期工作。 centerOnDomainOrigin 确实按预期工作。有什么想法吗?
    【解决方案3】:

    这是一个很好的问题。我认为当前版本的 AndroidPlot (0.6.0) 没有办法做到这一点,只有一系列值。 我在我的项目中创建了一个解决方法。我知道这并不完美,但它确实有效:创建两个重叠的系列,一个是绿色的,一个是背景色的。假设您有要绘制的 currentValue..

    if (currentValue>=0) {
        greenRes[i] = Float.valueOf(currentValue);
        coverRes[i] = Float.valueOf(0);
    }
    else {
        greenRes[i] = Float.valueOf(0);
        coverRes[i] = Float.valueOf(currentValue);
    }
    

    通过这种方式,您始终可以看到从零轴开始向上或向下的绿色条。

    【讨论】:

    • 您能否提供有关您如何使用它的代码的 sn-p 代码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2019-08-27
    相关资源
    最近更新 更多