`

JFreeChart的分类柱图及分类折线图

阅读更多

参考自:http://www.360doc.com/content/06/0330/15/7147_88686.shtml

一个使用CategoryDataset画分类柱图及分类折线图的例子:

CategoryChart的代码如下所示:

public class CategoryChart {

	public JFreeChart chart;
	private String title;
	private String categoryAxisLabel;
	private String valueAxisLabel;
	/**
	 * 分类关键字,如:"分类1","分类2"
	 */
	private String[] rowKeys;
	/**
	 * 某种分类类型中的值,如分类1中的"column1","column2"
	 */
	private String[] columnKeys;
	/**
	 * 每种分类对应的的填充数据
	 */
	private double[][] datas;
	private CategoryDataset dataset;

	/**
	 * 柱图
	 */
	public void createBarChart3D() {
		createCategoryDataset();
		chart = ChartFactory.createBarChart3D(title, // 图表标题
				categoryAxisLabel, // 目录轴的显示标签
				valueAxisLabel, // 数值轴的显示标签
				dataset, // 数据集
				PlotOrientation.VERTICAL, // 图表方向:水平、垂直
				true, // 是否显示图例(对于简单的柱状图必须是false)
				false, // 是否生成工具
				false // 是否生成URL链接
				);
		CategoryPlot plot = chart.getCategoryPlot();
		plot.setBackgroundPaint(new Color(238, 244, 255));// 设置图表的颜色
		chart.setBackgroundPaint(Color.WHITE);
		setChartFont("");

		ValueAxis rangeAxis = plot.getRangeAxis();
		// 设置最高的一个 Item 与图片顶端的距离
		rangeAxis.setUpperMargin(0.15);
		// 设置最低的一个 Item 与图片底端的距离
		rangeAxis.setLowerMargin(0.15);
		plot.setRangeAxis(rangeAxis);

		BarRenderer3D renderer = new BarRenderer3D();
		// 设置分类同一个columnKey的平行柱之间距离为0
		renderer.setItemMargin(0);
		// 显示每个柱的数值,并修改该数值的字体属性
		renderer
				.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
		renderer.setItemLabelFont(new Font("楷体", Font.PLAIN, 12));
		renderer.setItemLabelsVisible(true);
		plot.setRenderer(renderer);
	}

	/**
	 * 折线图
	 */
	public void createLineChart() {
		createCategoryDataset();
		chart = ChartFactory.createLineChart(title, // 图表标题
				categoryAxisLabel, // 目录轴的显示标签
				valueAxisLabel, // 数值轴的显示标签
				dataset, // 数据集
				PlotOrientation.VERTICAL, // 图表方向:水平、垂直
				true, // 是否显示图例(对于简单的柱状图必须是false)
				false, // 是否生成工具
				false // 是否生成URL链接
				);
		CategoryPlot plot = chart.getCategoryPlot();
		plot.setBackgroundPaint(new Color(238, 244, 255));// 设置图表的颜色
		chart.setBackgroundPaint(Color.WHITE);
		setChartFont("");
	}

	/**
	 * 创建分类数据集
	 */
	private void createCategoryDataset(){
		//当没有数据时,创建一个默认的分类数据集用来画图
		if(rowKeys == null || columnKeys == null || datas == null){
			dataset = new DefaultCategoryDataset();
		}else{
			// 创建分类数据集
			dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys,
					datas);
		}
	}
	
	/**
	 * 图标乱码解决
	 */
	private void setChartFont(String charttype) {
		Font title = new Font("楷体", Font.PLAIN, 15);
		Font f = new Font("楷体", Font.PLAIN, 12);
		// title(标题),
		TextTitle textTitle = chart.getTitle();
		textTitle.setFont(title);

		// 获得图表区域对象
		if ("PieChart".equals(charttype)) {
			PiePlot plot = (PiePlot) chart.getPlot();
			plot.setLabelFont(f);
		} else if ("XYChart".equals(charttype)) {
			XYPlot plot = (XYPlot) chart.getPlot();
			ValueAxis valAxis = plot.getDomainAxis();
			// 设置X轴坐标上的文字
			valAxis.setTickLabelFont(f);
			// 设置X轴的标题文字
			valAxis.setLabelFont(f);
			ValueAxis numberaxis = plot.getRangeAxis();
			// 设置Y轴坐标上的文字
			numberaxis.setTickLabelFont(f);
			// 设置Y轴的标题文字
			numberaxis.setLabelFont(f);
		} else {
			CategoryPlot plot = chart.getCategoryPlot();
			CategoryAxis domainAxis = plot.getDomainAxis();
			// 设置X轴坐标上的文字
			domainAxis.setTickLabelFont(f);
			// 设置X轴的标题文字
			domainAxis.setLabelFont(f);

			ValueAxis numberaxis = plot.getRangeAxis();
			// 设置Y轴坐标上的文字
			numberaxis.setTickLabelFont(f);
			// 设置Y轴的标题文字
			numberaxis.setLabelFont(f);
		}
		// legend(图释)
		chart.getLegend().setItemFont(f);

	}
//setter和getter方法
//构造函数
}

 测试程序如下所示:

public class CategoryChartTest extends CategoryChart {

	private void createCategoryChart(String chartType){
		if("LineCategoryChart".equalsIgnoreCase(chartType)){
			createLineChart();
		}else if("BarCategoryChart".equalsIgnoreCase(chartType)){
			createBarChart3D();
		}
	}
	
	public void createTwoCategoryChart(String chartType){
		this.setTitle("全年的风速和风能频率分布图");
		this.setCategoryAxisLabel("风速(m/s)");
		this.setValueAxisLabel("频率/%");
		this.setRowKeys(new String[]{"风速","风能"});
		this.setColumnKeys(new String[]{"<0.5","1","2","3","4","5",">5"});
		double[][] datas = new double[][]{{22.3,12.2,10.0,3.2,14.0,21.3,5.6},{4.3,36.5,23.5,21.0,6.3,9.8,15.7}};
		this.setDatas(datas);
		createCategoryChart(chartType);
		
	}
	
	public void createThreeCategoryChart(String chartType){
		this.setTitle("水果销量统计图");
		this.setCategoryAxisLabel("水果");
		this.setValueAxisLabel("销量");
		double[][] datas = new double[][] {{672, 766, 223, 540, 126}, {325, 521, 210, 340, 106}, {332, 256, 523, 240, 526}};
		String[] rowKeys = {"苹果","梨子","葡萄"};
		String[] columnKeys = {"北京","上海","广州","成都","深圳"};
		this.setRowKeys(rowKeys);
		this.setColumnKeys(columnKeys);
		this.setDatas(datas);
		createCategoryChart(chartType);
	}
	
	public static void main(String[] args) {
		CategoryChartTest test = new CategoryChartTest();
		//test.createTwoCategoryChart("BarCategoryChart");  // 1
		//test.createTwoCategoryChart("LineCategoryChart");
		//test.createThreeCategoryChart("BarCategoryChart");
		test.createThreeCategoryChart("LineCategoryChart"); //4
		JFreeChart chart = test.getChart();
		ChartFrame frame = new ChartFrame("BarChart Tesing!", chart);
		frame.pack();
		frame.setVisible(true);
	}
}

下面列出分别调用代码1、代码4时所画的图形:

调用代码1所画图形如下所示:



 调用代码4时所画的图形如下所示:


 

  • 大小: 20.2 KB
  • 大小: 26.3 KB
分享到:
评论

相关推荐

    jfreechart 堆栈柱状图跟折线图结合拼接

    jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707

    jfreechart 漂亮的折线图

    利用jfreechart绘制的漂亮的折线图,实现双纵坐标,折线点标签还带箭头指示,非常直观,需要提前下载jfreechart.jar文件,否则我的类会报错,也即是要配置运行环境

    JFreeChart 饼图,柱图,折线图

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,包括饼图、柱状图和折线图。在Java应用中,JFreeChart是一个不可或缺的工具,尤其在数据分析、报表生成或可视化数据的场景下。下面我们将深入...

    JSP利用JFreeChart生成折线图

    JFreeChart的`CategoryDataset`接口是存储分类数据的容器,可以用来创建折线图。你可以通过实现该接口的子类,如`DefaultCategoryDataset`,来填充数据。以下是一个创建数据集的例子: ```java ...

    JFreeChart 折线、柱状组合图

    public JFreeChart createChart(String Ytitle, String title, CategoryDataset lineData, CategoryDataset barData) { //参考附件 return chart; } //struts 部分 &lt;!--begin 维优特例 --&gt; ...

    JFreeChart画图 饼状图 单组柱状图 多组柱状图 堆积柱状图 折线图

    JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...

    jfreechart 生成折线图,饼图,柱状图,堆栈柱状图

    JFreeChart 是一个开源的Java库,用于生成高质量的2D图表,如折线图、饼图、柱状图和堆栈柱状图等。它广泛应用于数据分析、报告和应用程序中,提供丰富的自定义选项来满足各种视觉需求。在本项目中,你将找到能够...

    jfreechart折线图demo

    在这个“jfreechart折线图demo”中,我们将深入探讨如何使用 JFreeChart 创建和展示折线图。 1. **JFreeChart 概述** JFreeChart 提供了一套完整的 API,使得开发者可以方便地生成高质量的静态图表,并能轻松地将...

    java JXL导入导出Excel源码及jfreechart 生成折线图,饼图

    java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图

    jfreechart绘制折线图(平面和3D)

    JFreeChart是一款强大的Java图形库,它允许开发者创建多种类型的图表,包括折线图、柱状图、饼图、散点图等。在本主题中,我们将深入探讨如何使用JFreeChart来绘制平面和3D的折线图。 首先,让我们了解折线图的基本...

    jfreechart 折线图 应用

    该程序为main 函数,定义了三个方法,分别是jfreechart三种实现折线图的类型,返回的是一个chart 本程序是把图片保存到本地,当然实际应用中,只要在程序和页面中做相关配置即可以使用。 因为图片带点透明,所以...

    jfreeChar 折线图+柱形图(混合图) +最新Jar包及例子

    JFreeChart 是一个开源的Java库,用于生成高质量的、多样的图表,包括折线图、柱形图、饼图、散点图等。在这个特定的案例中,我们关注的是如何利用JFreeChart来创建折线图和柱形图的混合图表,这种图表在数据可视化...

    java里用JFreeChart画柱状图、折线图、雷达图

    在Java编程环境中,JFreeChart库是一个强大的工具,用于创建各种复杂的图表,包括柱状图、折线图和雷达图。这些图表对于数据可视化和数据分析非常有用,可以帮助开发者直观地展示大量信息。以下是对给定文件中每个...

    JFreeChart绘图柱形_饼形_折线图源码

    从给定的代码片段来看,我们正在探讨的是如何使用JFreeChart库在Java环境中创建不同类型的图表,包括饼图和折线图。JFreeChart是一个开源的Java图表库,提供了丰富的API来绘制各种统计图表,如条形图、饼图、折线图...

    jfreechart绘制的风速风向玫瑰图

    jfreechart是Java中一个流行的图表库,它提供了许多种类的图表,包括柱状图、折线图、饼图、雷达图等。本文主要介绍如何使用jfreechart绘制风速风向玫瑰图。 首先,了解jfreechart的基本结构。jfreechart的核心是...

    Java JFreeChart 后台生成折线图

    Java JFreeChart库是用于创建高质量图表的开源项目,它为Java开发者提供了丰富的图形类型,如折线图、饼图和柱状图等。在Java后台生成这些图表,可以用于数据可视化,帮助用户更好地理解存储在数据库或其他数据源中...

    jfreechart 折线图的一个例子

    **JFreeChart 折线图实例详解** JFreeChart 是一个强大的 Java 图形库,它提供了丰富的图表类型,包括折线图、柱状图、饼图等,适用于各种数据分析和展示场景。在这个例子中,我们将深入探讨如何使用 JFreeChart ...

    JFreeChart双Y轴折线图实例,可以直接运行

    JFreeChart双Y轴折线图实例,可以直接运行,实例类为LineChartDemo1.JAVA,有注释。 若想在web工程使用只需如下。 String filename = ServletUtilities.saveChartAsPNG(jfreechart, 600, 400, null, session); ...

    利用JFreeChart 实现柱状图,饼图,时序图,折线图等

    在Java编程环境中,JFreeChart库是一个非常强大的工具,它允许开发者轻松地创建各种图表,如柱状图、饼图、时序图和折线图等。这些图表在数据分析、报表展示以及各种可视化应用中非常常见。下面我们将详细介绍如何...

    JfreeChart画双Y轴折线图

    在Java编程领域,JFreeChart是一个非常流行的图表库,它允许开发者创建各种复杂的数据可视化图形,包括折线图、柱状图、饼图等。在本篇博客中,"JfreeChart画双Y轴折线图"的主题,将探讨如何使用JFreeChart库来创建...

Global site tag (gtag.js) - Google Analytics