StackedBarChart行键未添加到DefaultCategoryDataSet

时间:2011-11-13 11:35:52

标签: java jfreechart

我有两个实体类:A和B. A有B个实体,我有Map以下列格式定义:Map<A, List<B>

我想使用以下代码将所有地图数据添加到DefaultCategoryDataset。例如,如果有5 A且每个A有4 B,我想要25个行键。 (实体编号*(每个A中的entityNumber + B实体编号)。存储A类的Row键必须是相同的宽度;存储B实体的所有其他行必须具有相同的宽度。为了成功,我给了添加A行键((double)1 /(1 + bResultList .size())时的相同值,并在添加A行键时给出较小的值((double)1 /(1 + bResultList .size()+ 6)。

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
/** for each workpoint */
for (A aResult : map.keySet()) {
    List<B> bResultList = map.get(aResult);
    dataset.addValue(
        (double) 1 / (1 + bResultList.size()),
        "WorkPoint " + aResult.getTimeStep(),
        "WP T=" + aResult.getTimeStep());
    /** for each contingency result */
    for (B bResult : bResultList) {
        dataset.addValue(
            (double) 1 / (1 + bResultList.size() + 6),
            bResult.getName(),
            "WP T=" + aResult.getTimeStep());
    }
}

但是当我将所有地图数据添加到数据集时,不存储所有行键。当我调试时,数据集只有9行。 (A1,B1,B2,B3,B4,A2,A3,A4,A5)只有第一个A实体的B个实体被存储为行密钥。其他A实体的其他B实体不存储在数据库中。

但是当我显示图形时,所有数据都以图形显示,但顺序错误。 订单如下。

A1-B1-B2-B3-B4
B1-B2-B3-B4-A2
B1-B2-B3-B4-A3
B1-B2-B3-B4-A4
B1-B2-B3-B4-A5

我希望显示

A1-B1-B2-B3-B4
A2-B1-B2-B3-B4
A3-B1-B2-B3-B4
A4-B1-B2-B3-B4
A5-B1-B2-B3-B4

1 个答案:

答案 0 :(得分:1)

没有你的sscce问题不明显。将您的数据集与具有不同系列(行)和类别(列)键的典型CategoryDataset(例如this one)进行比较可能会有所帮助。此外,添加CategoryItemLabelGenerator可能有助于调试。

renderer.setBaseItemLabelGenerator(
    new StandardCategoryItemLabelGenerator(
        "{0} {1} {2}", NumberFormat.getInstance()));
renderer.setBaseItemLabelsVisible(true);