考虑achartengine(http://www.achartengine.org/content/demo.html)的“Stacked Sales Bar Chart”样本。现在,想象一下,在一个月中 - 比如说,2007年11月销售的单位比2008年多。为了在图表上表示这一点,我们将不得不改变“部分”的堆叠顺序。 2008年的部分必须首先(深蓝色),2007年的部分(浅蓝色)必须叠加在它上面。
如何在achartengine中获得这种效果?我看到它的方式,无法控制每个单独栏的Renderer
。 Renderer
适用于Series
整体。因此,如果我按所需顺序提供Dataset
,则只会显示2007年的列(因为2008年的价值较低的值是先提供的,因此2007年会超过它)。 / p>
答案 0 :(得分:2)
正如你自己所说的那样,无法控制每个图表值(bar)的渲染。它会破坏堆积条形图的目的。
如果2008年的销售额与2007年同月的销售额相比较高,则会显示 - 较低的标准(2007年)会更短,而较高的标准(2008年)会更长。
我相信你使用堆积条形图是错误的。如果您希望比较每年的每月销售额,您应该使用例如它上面的折线图,即显示“平均温度”的折线图。您可以轻松查看每个月的销售额差异,如果您希望累计销售额作为参考,则可以添加第三个系列作为前两个系列的总和。
<强>更新强>
或者您可以使用图表#6(“过去两年的每月销售额”),因为它可以准确显示销售额的差异。
更新2
您希望拥有的是每个条形部分按降序排序,即销售额较高的年份低于销售额较低的年份。我怀疑rendering中的一个简单改变就足够了。
要做到这一点,您需要创建一个SortedRangeStackedBarChart
,在渲染系列值之前对其进行排序。
public class SortedRangeStackedBarChart
extends org.achartengine.chart.RangeBarChart {
void drawSeries(...) {
...
}
}