考虑 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/