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

JFreeChart生成XYChart时折线过原点(0,0)如何解决?

问题解决方法

根因分析

折线异常回落至原点通常由以下两个原因导致:

  • mc.x、mc.y数组存在未赋值的元素,默认值为0被加入数据系列,导致连线时多了(0,0)的异常点
  • XYSeries默认开启X轴数值自动排序功能,如果你传入的x数组不是严格升序排列,JFreeChart会将所有点按X值从小到大重排后再连线,就会出现折线跳回小X值(包括原点)的异常表现。

修复方案

方案1:关闭XYSeries自动排序(最常用,适配任意X值顺序的输入数据)

修改createDataset方法中创建XYSeries的代码,使用多参数构造方法关闭自动排序功能:

// 构造参数说明:1.系列名称 2.是否自动对X值排序 3.是否允许重复X值
final XYSeries equation1 = new XYSeries(mc.eq, false, true);

改完后数据会严格按照你数组的添加顺序连线,不会因为重排序出现跳变。

方案2:校验数组数据有效性

如果确认是数组存在未赋值的0值导致的问题,先清理数组无效数据,或者调整遍历范围只取有效数据即可。你可以临时加打印日志确认数据:

for (short i = 0; i<200; i++){
    // 打印所有待添加的坐标,排查是否有异常0值
    System.out.printf("第%d个点:x=%f, y=%f%n", i, mc.x[i], mc.y[i]);
    equation1.add(mc.x[i] , mc.y[i]);
}

方案3:预先对数据排序

如果你确实需要保留XYSeries的自动排序功能,提前将x和y数组按x值升序排序后再加入数据系列,也可以避免折线跳变问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:45:02