Java使用JFreeChart绘制堆积图

2012-03-31 20:11:39|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:Java, Swing, 界面设计|来源:唯设编程网

在统计图表中,堆积图能够直观的对数据进行展示,Java利用JFreeChart可以方便的绘制各种统计图表,前面的文章介绍了Java使用JFreeChart绘制柱状图、折线图、饼形图和时序图的方法,本文继续介绍JFreeChart的使用方法,本文将着重介绍 Swing客户端程序使用 JFreeChart在窗体中绘制堆积图的方法,依然会给出程序的运行效果和实际的Java源代码。

首先展示程序的运行效果:

JFreeChart绘制堆积图

Java代码:

package Test.JFreeChar;

import java.awt.Component;
import java.awt.Font;

import javax.swing.JFrame;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;
/**
 * JFreeChar堆积图测试
 *
 */
public class JFreeCharStack1 extends JFrame{
    private static final long serialVersionUID = 1L;
    public static void main(String[] args){
        new JFreeCharStack1();
    }
    JFreeCharStack1(){
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setTitle("JFreeChar堆积图");
        this.add(CreateMainPanel());
        this.pack();
        this.setVisible(true);
    }
    private Component CreateMainPanel() {        
        CategoryDataset dataset = getBarData();        
        JFreeChart chart = createJFreeChart(dataset);
        return new ChartPanel(chart);
    }
    private JFreeChart createJFreeChart(CategoryDataset dataset) {
        //这里的"name"参数;是什么意思我也不知道,反正这样可以用
        StandardChartTheme standardChartTheme = new StandardChartTheme("name");
        //可以改变轴向的字体
        standardChartTheme.setLargeFont(new Font("楷体",Font.BOLD, 12));
        //可以改变图例的字体
        standardChartTheme.setRegularFont(new Font("宋体",Font.BOLD, 8));
        //可以改变图标的标题字体
        standardChartTheme.setExtraLargeFont(new Font("隶书",Font.BOLD, 20));
        ChartFactory.setChartTheme(standardChartTheme);//设置主题
        // 图表标题
        JFreeChart chart = ChartFactory.createStackedBarChart("测试用堆积图",
                "xANXIS", // 目录轴的显示标签
                "y坐标", // 数值轴的显示标签
                dataset, // 数据集
                PlotOrientation.VERTICAL, // 图表方向:水平、垂直
                true, // 是否显示图例(对于简单的柱状图必须是false)
                false, // 是否生成工具
                false // 是否生成URL链接
                );
        return chart;
    }
    public CategoryDataset getBarData() {
        double[] income=new double[30];
        double[] outlay=new double[30];
        double[][] data = new double[][] {income,outlay};
        String[] columnKeys = new String[30];
        for(int i=0;i<30;i++){
            income[i]=Math.random()*100;
            outlay[i]=Math.random()*90;
            columnKeys[i]="08"+String.format("%02d", i+1);
        }
        String[] rowKeys = { "收入", "支出" };    
        return DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
    }
}

至此,一个完整的Java使用JFreeChart绘制堆积图的实例便完成了,并将其显示在Swing的窗体界面中。

发表评论0条 】
网友评论(共?条评论)..
Java使用JFreeChart绘制堆积图