jFreechart三种图的测试代码
时间: 2023-11-15 17:00:06 浏览: 203
以下是使用 jFreechart 绘制三种常见图表的示例代码:
1. 折线图(Line Chart)
```java
import java.awt.Color;
import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
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.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
public class LineChartExample {
public static void main(String[] args) {
// 创建数据集
CategoryDataset dataset = createDataset();
// 创建图表
JFreeChart chart = ChartFactory.createLineChart(
"折线图", // 图表标题
"年份", // x轴标签
"销售额(万元)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向
true, // 是否显示图例
false, // 是否显示工具提示
false // 是否生成URL链接
);
// 设置整个图表的字体
Font font = new Font("宋体", Font.PLAIN, 12);
chart.getTitle().setFont(font);
chart.getLegend().setItemFont(font);
// 获取图表区域对象
CategoryPlot plot = chart.getCategoryPlot();
// 设置数据区的背景颜色
plot.setBackgroundPaint(Color.WHITE);
// 设置数据区的网格线
plot.setDomainGridlinePaint(Color.GRAY);
plot.setRangeGridlinePaint(Color.GRAY);
// 设置x轴
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setTickLabelFont(font);
domainAxis.setLabelFont(font);
// 设置y轴
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setTickLabelFont(font);
rangeAxis.setLabelFont(font);
// 设置折线的颜色和形状
LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
renderer.setSeriesPaint(0, Color.RED);
renderer.setSeriesShapesVisible(0, true);
// 显示图表
ChartFrame frame = new ChartFrame("折线图", chart);
frame.pack();
frame.setVisible(true);
}
// 创建数据集
private static CategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(120, "销售额", "2016");
dataset.addValue(150, "销售额", "2017");
dataset.addValue(180, "销售额", "2018");
dataset.addValue(200, "销售额", "2019");
dataset.addValue(220, "销售额", "2020");
return dataset;
}
}
```
2. 柱状图(Bar Chart)
```java
import java.awt.Color;
import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
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.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
public class BarChartExample {
public static void main(String[] args) {
// 创建数据集
CategoryDataset dataset = createDataset();
// 创建图表
JFreeChart chart = ChartFactory.createBarChart(
"柱状图", // 图表标题
"年份", // x轴标签
"销售额(万元)", // y轴标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向
true, // 是否显示图例
false, // 是否显示工具提示
false // 是否生成URL链接
);
// 设置整个图表的字体
Font font = new Font("宋体", Font.PLAIN, 12);
chart.getTitle().setFont(font);
chart.getLegend().setItemFont(font);
// 获取图表区域对象
CategoryPlot plot = chart.getCategoryPlot();
// 设置数据区的背景颜色
plot.setBackgroundPaint(Color.WHITE);
// 设置数据区的网格线
plot.setDomainGridlinePaint(Color.GRAY);
plot.setRangeGridlinePaint(Color.GRAY);
// 设置x轴
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setTickLabelFont(font);
domainAxis.setLabelFont(font);
// 设置y轴
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
rangeAxis.setTickLabelFont(font);
rangeAxis.setLabelFont(font);
// 设置柱子的颜色
BarRenderer renderer = (BarRenderer) plot.getRenderer();
renderer.setSeriesPaint(0, Color.RED);
// 显示图表
ChartFrame frame = new ChartFrame("柱状图", chart);
frame.pack();
frame.setVisible(true);
}
// 创建数据集
private static CategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(120, "销售额", "2016");
dataset.addValue(150, "销售额", "2017");
dataset.addValue(180, "销售额", "2018");
dataset.addValue(200, "销售额", "2019");
dataset.addValue(220, "销售额", "2020");
return dataset;
}
}
```
3. 饼图(Pie Chart)
```java
import java.awt.Color;
import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
public class PieChartExample {
public static void main(String[] args) {
// 创建数据集
PieDataset dataset = createDataset();
// 创建图表
JFreeChart chart = ChartFactory.createPieChart(
"饼图", // 图表标题
dataset, // 数据集
true, // 是否显示图例
false, // 是否显示工具提示
false // 是否生成URL链接
);
// 设置整个图表的字体
Font font = new Font("宋体", Font.PLAIN, 12);
chart.getTitle().setFont(font);
chart.getLegend().setItemFont(font);
// 获取图表区域对象
PiePlot plot = (PiePlot) chart.getPlot();
// 设置饼图的背景颜色
plot.setBackgroundPaint(Color.WHITE);
// 设置饼图的分离间距
plot.setExplodePercent("Java", 0.1);
// 设置饼图的标签字体
plot.setLabelFont(font);
// 显示图表
ChartFrame frame = new ChartFrame("饼图", chart);
frame.pack();
frame.setVisible(true);
}
// 创建数据集
private static PieDataset createDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("Java", 70);
dataset.setValue("Python", 20);
dataset.setValue("C++", 10);
return dataset;
}
}
```
以上三个示例代码可以直接在 Java IDE 中运行,也可以将代码保存为 `.java` 文件并使用命令行进行编译和运行。
阅读全文