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

如何使用JFreeChart绘制数组数据?X轴i/Y轴massAngle[i]实现问询

修正你的JFreeChart折线图代码

嘿,我注意到你想用JFreeChart绘制以索引i为X轴、massAngle[i]为Y轴的折线图,但当前的代码逻辑有明显问题——你在循环里重复创建了所有图表相关的对象,这会导致最终界面上堆叠N个图表(N是massAngle的长度),而且每个图表里只有单个数据点,完全达不到预期效果。咱们来修正一下:

问题分析

  • 你在for循环的每一次迭代中,都新建了XYSeries、XYSeriesCollection、JFreeChart和ChartPanel,这完全没必要,而且会造成冗余的组件和错误的数据展示
  • 图表的标题和轴标签是俄语的“经度和纬度”,如果你的数据是massAngle,可能需要根据实际需求调整这些文本

修正后的代码

// 1. 创建一个XYSeries来存储所有数据点
XYSeries series = new XYSeries("Mass Angle Data");
// 2. 循环添加所有数据到同一个系列中
for (int i = 0; i < massAngle.length; i++) {
    series.add(i, massAngle[i]);
}
// 3. 将系列放入集合作为数据源
XYSeriesCollection seriesCollection = new XYSeriesCollection(series);
// 4. 创建图表,这里可以根据需求修改标题和轴标签
final JFreeChart chart = ChartFactory.createXYLineChart(
    "Mass Angle vs Index",  // 图表标题
    "Index (i)",           // X轴标签
    "Mass Angle",          // Y轴标签
    seriesCollection,
    PlotOrientation.VERTICAL,
    true, true, false
);
// 5. 创建图表面板并添加到容器
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new Dimension(1150, 470));
panel.add(chartPanel);

关键修正点

  • 把XYSeries的创建移到循环外,确保所有数据点都添加到同一个系列中
  • 只创建一次XYSeriesCollection、JFreeChart和ChartPanel,避免重复创建组件
  • 调整了标题和轴标签来匹配你的数据类型,你可以根据实际需求改回俄语或者其他文本

这样修改后,你就能得到一个展示所有massAngle数据对应索引的折线图啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:18:28