首页 > 解决方案 > jFreechart CategoryDataset 排序列

问题描述

我创建了一个多系列折线图并动态填充其数据集:

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (Map.Entry<Long, TreeMap<Integer, Integer>> entrya : mtypes.entrySet()) {
    TreeMap<Integer, Integer> atypes = entrya.getValue();
    if (atypes.isEmpty())
        continue;

    Long aid = entrya.getKey();
    String name = (aid < 2 ? "Важное" : (aid < 3 ? "Негатив" : "Позитив"));
    for (Map.Entry<Integer, Integer> entrym : atypes.entrySet()) {
        int m = entrym.getKey();
        dataset.addValue(entrym.getValue(), name, Integer.valueOf(m + 1));
    }
    image = PDFUtil.printLineChart(writer, "", "", "Баллы", dataset , 500, 0, true);

一个系列的源数组 atypes 具有以下形式:

{
1={2=4, 3=1}, 
2={0=1, 3=1, 4=1}, 
3={0=3, 1=16, 2=31, 3=2, 4=12}
}

地图中的所有数字键都按升序排序,但在图表上,列值未排序(横轴): CategoryDataset 中未排序的列

我怎样才能对它进行升序排序?这段代码没有帮助:

chart.getCategoryPlot().getDomainAxis().setColumnRenderingOrder(SortOrder.ASCENDING)

标签: jfreechart

解决方案


推荐阅读