堆积条形图:仅更改其中一个条形图的堆叠列的顺序

时间:2013-06-10 12:56:11

标签: java android achartengine

考虑achartengine(http://www.achartengine.org/content/demo.html)的“Stacked Sales Bar Chart”样本。现在,想象一下,在一个月中 - 比如说,2007年11月销售的单位比2008年多。为了在图表上表示这一点,我们将不得不改变“部分”的堆叠顺序。 2008年的部分必须首先(深蓝色),2007年的部分(浅蓝色)必须叠加在它上面。

如何在achartengine中获得这种效果?我看到它的方式,无法控制每个单独栏的RendererRenderer适用于Series整体。因此,如果我按所需顺序提供Dataset,则只会显示2007年的列(因为2008年的价值较低的值是先提供的,因此2007年会超过它)。 / p>

1 个答案:

答案 0 :(得分:2)

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

如果2008年的销售额与2007年同月的销售额相比较高,则会显示 - 较低的标准(2007年)会更短,而较高的标准(2008年)会更长。

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

<强>更新

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

更新2

您希望拥有的是每个条形部分按降序排序,即销售额较高的年份低于销售额较低的年份。我怀疑rendering中的一个简单改变就足够了。 要做到这一点,您需要创建一个SortedRangeStackedBarChart,在渲染系列值之前对其进行排序。

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

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