jfreechart 层叠柱状图+折线图组合
时间: 2024-10-01 11:05:09 浏览: 57
JFreeChart是一个流行的开源Java库,用于创建各种图表,包括层叠柱状图(Stacked Bar Chart)和折线图(Line Chart)。在JFreeChart中,你可以轻松地将这两种类型的图表结合在一起展示数据。
层叠柱状图通常用于比较各部分占总体的比例,每个类别中的条形会累积起来,显示的是累计值。而折线图则更适用于表示趋势和连续变化的数据。为了在JFreeChart中组合它们,可以按照以下步骤操作:
1. **创建柱状图**:首先创建一个`DefaultCategoryDataset`或自定义数据集,然后使用`BarPlot`构造柱状图。
2. **创建折线图**:同样创建一个`NumberAxis`和`XYPlot`,以及一个`XYSeriesCollection`来存储系列数据。
3. **添加到同一个图表容器**:使用`CombinedDomainXYPlot`,它允许你在同一个坐标系中叠加多个`XYPlot`。首先创建一个主轴,然后添加柱状图的`BarPlot`和折线图的`XYPlot`作为子图。
4. **绘制层叠效果**:设置`BarPlot`的`stackMode`属性为`XY.StackMode.STACKED`,使其堆叠显示。
5. **生成图表组件**:最后,创建一个`JFreeChart`实例并将其渲染成`JFrame`、`JPanel`或其他支持的输出形式。
示例代码可能会像这样:
```java
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.*;
...
// 创建数据
DefaultCategoryDataset dataset = ...;
// 创建柱状图
BarChart barChart = ChartFactory.createStackedBarChart(
"标题", // X轴标签
"Y轴标签", // Y轴标签
dataset, // 数据集
new CategoryPlot(
..., // 其他柱状图配置项
new StackedBarRenderer() // 使用堆叠模式
)
);
// 创建折线图
XYLineSeries xySeries = ...;
XYPlot linePlot = new XYPlot(xySeries, ..., ...);
linePlot.setDataset(0, ...); // 设置数据集
// 组合图表
CombinedDomainXYPlot combinedPlot = new CombinedDomainXYPlot(barChart.getDomainAxis());
combinedPlot.add(linePlot, 1);
// 最后创建JFreeChart
JFreeChart combinedChart = new JFreeChart(combinedPlot);
```
阅读全文