如何使用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
相关产品推荐
相关产品推荐

