java - 堆积条形图 : Changing the order of the stacked columns for just one of the bars

标签 java android achartengine

考虑 achartengine 的“堆叠销售条形图”示例 ( http://www.achartengine.org/content/demo.html )。现在,想象一下,在其中一个月份中,例如 2007 年 11 月,销量比 2008 年多。为了在图表上表示这一点,我们必须更改“部分”的堆叠顺序。 2008 年的部分必须放在第一位(深蓝色),2007 年的部分(浅蓝色)必须堆叠在其上面。

如何在 achartengine 中获得这种效果?在我看来,人们无法控制每个单独栏的渲染器。 Renderer 适用于整个 Series。因此,如果我按照所需的顺序提供Dataset,则只会显示 2007 年的列(因为首先提供值(value)较低的 2008 年的值,因此 2007 年会覆盖它) )。

最佳答案

正如您自己所说,人们无法控制每个图表值(条形图)的渲染。它会违背堆积条形图的目的。

如果 2008 年的销售额高于 2007 年同月,则条形图将显示 - 较低的条形图 (2007) 会较短,较高的条形图 (2008) 会较长。

我相信您错误地使用了堆积条形图。如果您想比较每年的月销售额,您应该使用例如其上方的折线图,即显示“平均温度”的折线图。您可以轻松地看到每个月销售额的差异,如果您想要累积销售额作为引用,您可以添加第三个系列作为前两个系列的总和。

更新

或者您可以使用图表 #6(“过去 2 年的每月销售额”),因为它准确地显示了销售额的差异。

更新2

您希望每个条形部分按降序排序,即销售额较高的年份低于销售额较低的年份。我怀疑 rendering 中的简单更改就足够了。 为此,您需要创建一个 SortedRangeStackedBarChart,它会在渲染系列值之前对它们进行排序。

public class SortedRangeStackedBarChart
    extends org.achartengine.chart.RangeBarChart {

  void drawSeries(...) {
    ...
  }
}    

关于java - 堆积条形图 : Changing the order of the stacked columns for just one of the bars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17024402/

相关文章:

java - Jmockit 和 @PostConstruct bean

android - Cordova Android 未捕获函数错误

java - 如何在图表引擎图下添加 TextView

java - 使用sqlite登录失败

android - 如何从 Android 应用程序将带有 POST 请求的 token 发送到 Django REST api?

android - 在 achartengine 中使用字符串代替 double /长折线图

java - 在ArrayList中存储不同类的对象

java - 通过鼠标单击进行选择排序对行进行排序

java - 静态 HashMap 初始化