StackedBarChart行键未添加到DefaultCategoryDataSet

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

我想用以下代码将所有地图数据添加到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 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 

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

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