如何在JFreeChart中插入背景图并仅保留红色轨迹线条?
移除JFreeChart中除红色轨迹线外的所有元素解决方案
我明白你现在的需求——只保留红色轨迹线条,把图表里其他多余元素都去掉对吧?结合你给出的代码,我来一步步帮你调整:
隐藏坐标轴:默认的X、Y轴完全不需要,直接设置不可见
XYPlot plot = chart4.getXYPlot(); // 隐藏X轴 plot.getDomainAxis().setVisible(false); // 隐藏Y轴 plot.getRangeAxis().setVisible(false);移除网格线:图表默认的网格线会干扰背景图和轨迹线,直接关闭
plot.setDomainGridlinesVisible(false); plot.setRangeGridlinesVisible(false);删除图例:你不需要显示系列名称的图例,直接从图表中移除
chart4.removeLegend();设置绘图区透明:默认绘图区有背景色,会遮挡你添加的背景图,把它设为全透明
plot.setBackgroundPaint(new Color(0, 0, 0, 0));定制轨迹线样式:确保轨迹是红色,同时隐藏默认的散点标记(因为你用的是散点图模板,默认会显示每个数据点)
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer(); renderer.setBaseShapesVisible(false); // 隐藏数据点标记 renderer.setBaseSeriesPaint(0, Color.RED); // 设置线条为红色 renderer.setBaseStroke(new BasicStroke(2.0f)); // 可选:调粗线条让轨迹更清晰
修改后的完整代码
XYSeries series4 = new XYSeries("Траектория движения ЛА"); for (int i = 0; i < La.size(); i++) { series4.add(massLatitude[i], massLongitude[i]); } XYSeriesCollection seriesCollection4 = new XYSeriesCollection(series4); Image icon = ImageIO.read(new File("image.jpg")); final JFreeChart chart4 = ChartFactory.createScatterPlot("Траектория полета ЛА", null, null, seriesCollection4); // 移除多余元素的核心配置 XYPlot plot = chart4.getXYPlot(); // 隐藏坐标轴 plot.getDomainAxis().setVisible(false); plot.getRangeAxis().setVisible(false); // 关闭网格线 plot.setDomainGridlinesVisible(false); plot.setRangeGridlinesVisible(false); // 删除图例 chart4.removeLegend(); // 绘图区透明 plot.setBackgroundPaint(new Color(0, 0, 0, 0)); // 配置轨迹线样式 XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer(); renderer.setBaseShapesVisible(false); renderer.setBaseSeriesPaint(0, Color.RED); renderer.setBaseStroke(new BasicStroke(2.0f)); chart4.setBackgroundImage(icon); final ChartPanel chartPanel4 = new ChartPanel(chart4); chartPanel4.setPreferredSize(new Dimension(1300, 480)); panel.add(chartPanel4);
内容的提问来源于stack exchange,提问作者VIRICH
相关产品推荐
相关产品推荐

