2

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

我该如何在 achartengine 中获得这种效果?在我看来,无法控制Renderer每个单独的酒吧。这Renderer适用于Series一个整体。因此,如果我Dataset以所需的顺序提供 ,则只会显示 2007 的列(因为 2008 的值较低,它首先提供,因此 2007 会覆盖它)。

4

1 回答 1

2

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

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

我相信您使用的堆积条形图是错误的。如果您想比较每年的月销售额,您应该使用例如它上面的折线图,即显示“平均温度”的图。您可以很容易地看到每个月的销售额差异,如果您想获得累计销售额作为参考,您可以添加第三个系列作为前两个系列的总和。

更新

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

更新 2

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

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

  void drawSeries(...) {
    ...
  }
}    
于 2013-06-20T13:07:12.063 回答