You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将AnyLogic敏感性分析图表图例设置为升序排列?

解决敏感性分析图表图例升序排列问题

核心问题分析

你输入的数据集本身是升序,但调用sortAscending()未生效,大概率是排序时机不对——需要在所有数据集添加完成后再执行排序操作,而非添加过程中单独调用。

具体解决方案

  • 调整排序时机
    先完成所有addDataSet调用,确保所有数据集都已加载到图表中,再调用排序方法:

    // 循环完成所有数据集添加(你的原有代码逻辑)
    Color color = lerpColor( (getCurrentIteration() - 1) / (double) (getMaximumIterations() - 1), blue, red );
    chart0.addDataSet( root.childDS, format( root.childgoal ), color, true, Chart.INTERPOLATION_LINEAR, 1, Chart.POINT_NONE );
    
    // 所有数据集添加完毕后执行排序
    chart0.sortAscending();
    
  • 手动排序图例项(如果内置方法失效)
    若sortAscending()仍不生效,可手动获取图例项列表,按标签规则排序后重新设置:

    // 获取当前图例项集合
    List<LegendItem> legendItems = chart0.getLegend().getItems();
    
    // 按标签文本升序排序(字符串默认排序)
    Collections.sort(legendItems, (itemA, itemB) -> itemA.getLabel().compareTo(itemB.getLabel()));
    
    // 重新设置排序后的图例项
    chart0.getLegend().setItems(legendItems);
    
  • 处理数字标签的特殊排序
    如果图例标签是数字转成的字符串,默认字符串排序会出现"10"排在"2"前的问题,需转成数值类型比较:

    Collections.sort(legendItems, (itemA, itemB) -> {
        // 将标签转为Double类型后比较
        double valA = Double.parseDouble(itemA.getLabel());
        double valB = Double.parseDouble(itemB.getLabel());
        return Double.compare(valA, valB);
    });
    

内容的提问来源于stack exchange,提问作者Alastair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 09:06:07