JFreeChart 折线图并显示平均值的横线,给一个代码试列
时间: 2024-05-03 15:20:55 浏览: 88
以下是一个使用JFreeChart库绘制折线图并在其中添加平均值横线的示例代码:
```java
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import java.awt.*;
public class LineChart {
public static JFreeChart createChart() {
// 创建数据集对象,指定默认分类和值
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(10.0, "Series 1", "Category 1");
dataset.addValue(20.0, "Series 1", "Category 2");
dataset.addValue(30.0, "Series 1", "Category 3");
dataset.addValue(40.0, "Series 1", "Category 4");
// 创建折线图对象
JFreeChart chart = ChartFactory.createLineChart(
"Line Chart Demo", // 图表标题
"X", // X轴标签
"Y", // Y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向
true, // 是否显示图例
true, // 是否使用工具提示
false // 是否使用urls
);
// 处理折线图的细节
CategoryPlot plot = (CategoryPlot) chart.getPlot();
CategoryAxis domainAxis = plot.getDomainAxis(); // 获取X轴
domainAxis.setTickLabelFont(new Font("SansSerif", Font.PLAIN, 12));
domainAxis.setLabelFont(new Font("SansSerif", Font.PLAIN, 12));
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); // 获取Y轴
rangeAxis.setTickLabelFont(new Font("SansSerif", Font.PLAIN, 12));
rangeAxis.setLabelFont(new Font("SansSerif", Font.PLAIN, 12));
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer(); // 获取渲染器
renderer.setBaseStroke(new BasicStroke(2.0f)); //设置线宽度
renderer.setSeriesPaint(0, Color.blue); //设置线颜色
// 添加平均值横线
double average = dataset.getRangeMean();
plot.addRangeMarker(new ValueMarker(average, Color.red, new BasicStroke(2.0f)));
return chart;
}
}
```
当您调用`createChart()`方法时,将返回一个JFreeChart对象。您可以将其绘制到Swing窗口或保存为图像文件等。
阅读全文