jfreechart生成横向 一个柱子上三种颜色的堆栈柱状图
时间: 2024-03-11 19:47:08 浏览: 22
要生成一个横向的、一个柱子上有三种颜色的堆栈柱状图,可以按照以下步骤进行:
1. 创建一个CategoryDataset对象,设置数据。
```java
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(1.0, "Series 1", "Category 1");
dataset.addValue(2.0, "Series 2", "Category 1");
dataset.addValue(3.0, "Series 3", "Category 1");
```
2. 创建一个CategoryAxis对象,设置坐标轴。
```java
CategoryAxis categoryAxis = new CategoryAxis();
```
3. 创建一个NumberAxis对象,设置数据轴。
```java
NumberAxis numberAxis = new NumberAxis();
```
4. 创建一个StackedBarRenderer对象,设置渲染器。
```java
StackedBarRenderer renderer = new StackedBarRenderer();
```
5. 设置渲染器的颜色。
```java
renderer.setSeriesPaint(0, Color.RED);
renderer.setSeriesPaint(1, Color.GREEN);
renderer.setSeriesPaint(2, Color.BLUE);
```
6. 创建一个CategoryPlot对象,设置数据集、坐标轴、数据轴、渲染器。
```java
CategoryPlot plot = new CategoryPlot(dataset, categoryAxis, numberAxis, renderer);
```
7. 创建一个JFreeChart对象,设置标题、CategoryPlot。
```java
JFreeChart chart = new JFreeChart("Stacked Bar Chart Demo", JFreeChart.DEFAULT_TITLE_FONT, plot, false);
```
8. 创建一个ChartPanel对象,将JFreeChart添加到面板上。
```java
ChartPanel chartPanel = new ChartPanel(chart);
```
9. 将面板添加到窗口上。
```java
JFrame frame = new JFrame("Stacked Bar Chart Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(chartPanel);
frame.pack();
frame.setVisible(true);
```
完整代码示例:
```java
import java.awt.Color;
import javax.swing.JFrame;
import org.jfree.chart.ChartPanel;
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.renderer.category.StackedBarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
public class StackedBarChartDemo {
public static void main(String[] args) {
CategoryDataset dataset = createDataset();
CategoryAxis categoryAxis = new CategoryAxis();
NumberAxis numberAxis = new NumberAxis();
StackedBarRenderer renderer = new StackedBarRenderer();
renderer.setSeriesPaint(0, Color.RED);
renderer.setSeriesPaint(1, Color.GREEN);
renderer.setSeriesPaint(2, Color.BLUE);
CategoryPlot plot = new CategoryPlot(dataset, categoryAxis, numberAxis, renderer);
JFreeChart chart = new JFreeChart("Stacked Bar Chart Demo", JFreeChart.DEFAULT_TITLE_FONT, plot, false);
ChartPanel chartPanel = new ChartPanel(chart);
JFrame frame = new JFrame("Stacked Bar Chart Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(chartPanel);
frame.pack();
frame.setVisible(true);
}
private static CategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(1.0, "Series 1", "Category 1");
dataset.addValue(2.0, "Series 2", "Category 1");
dataset.addValue(3.0, "Series 3", "Category 1");
return dataset;
}
}
```
这样就可以生成一个横向的、一个柱子上有三种颜色的堆栈柱状图了。