`
Hillen.chan
  • 浏览: 62934 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Jfreechar-简单Line图形创建

阅读更多
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.FileOutputStream;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.HorizontalAlignment;
import org.jfree.ui.RectangleEdge;
/**
 * 线状图形创建
 * @author Administrator
 *
 */
public class Line {

	public static void main(String[] args) {
		//数据
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(212, "Classes类", "JDK 1.0版本");
		dataset.addValue(504, "Classes类", "JDK 1.1版本");
		dataset.addValue(1520, "Classes类", "SDK 1.2版本");
		dataset.addValue(1842, "Classes类", "SDK 1.3版本");
		dataset.addValue(2991, "Classes类", "SDK 1.4版本");
		JFreeChart chart = ChartFactory.createLineChart(	"Java Standard Class Library","Release版本","Class数量",dataset,PlotOrientation.VERTICAL,false,	true,false	);
		//配置chart
		Line.configFont(chart);
		//设置标题
		TextTitle t = new TextTitle("Number of Classes By Release");
		t.setFont(new Font("Comic Sans MS", Font.PLAIN, 15));
		chart.addSubtitle(t);
		//设置标题,并把标题放到最下面的右边
		TextTitle source = new TextTitle("Source: Java In A Nutshell (4th Edition) by David Flanagan (O’Reilly)");
		source.setFont(new Font("Comic Sans MS", Font.PLAIN, 15));
		//放到底部
		source.setPosition(RectangleEdge.BOTTOM);
		//放到右边
		source.setHorizontalAlignment(HorizontalAlignment.RIGHT);
		//添加
		chart.addSubtitle(source);
		
		//设置背影色
		chart.setBackgroundPaint(Color.white);
		
		CategoryPlot plot = (CategoryPlot)chart.getPlot();
		
		//设置网格线
		plot.setRangeGridlinePaint(Color.white);
		// customise the range axis...(这个我不知道是啥子)		
		NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
		rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
		//设置线与线之间的连结点的样式,比如说是否空心,颜色等
		LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot	.getRenderer();
		renderer.setShapesVisible(true);
		renderer.setDrawOutlines(true);
		renderer.setUseFillPaint(true);
		renderer.setFillPaint(Color.yellow);
		
		FileOutputStream fos_jpg = null;
		try {
			fos_jpg = new FileOutputStream("c:\\Line.jpg");
			ChartUtilities.writeChartAsJPEG(fos_jpg,0.99f,chart,800,600,	null);
			fos_jpg.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
         	/**
	 * 解决乱码和样式等问题
	 * @param chart
	 */
	private static void configFont(JFreeChart chart) {
		// 配置字体
		Font xfont = new Font("宋体", Font.CENTER_BASELINE, 12);// X轴
		Font yfont = new Font("宋体", Font.CENTER_BASELINE, 20);// Y轴
		Font kfont = new Font("宋体", Font.CENTER_BASELINE, 18);// 底部
		Font titleFont = new Font("微软雅黑", Font.CENTER_BASELINE, 25); // 图片标题
		CategoryPlot plot = chart.getCategoryPlot();// 图形的绘制结构对象
		//数据轴网格线条颜色
		plot.setRangeGridlinePaint(Color.BLUE);
		//数据轴网格线条笔触
		plot.setRangeGridlineStroke(new BasicStroke(1.0f));
		// 图片标题
		chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont));

		//X轴
		CategoryAxis domainAxis = plot.getDomainAxis();
		//设置X轴标题字体
		domainAxis.setLabelFont(xfont);
		//设置X轴字体
		domainAxis.setTickLabelFont(xfont);
		//设置字体颜色
		domainAxis.setTickLabelPaint(Color.BLUE);
		//横轴上的label斜显示
		//domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); 
		//domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);
		//分类轴边距,同种类型之间的距离,比如说Row 1之间的
		//domainAxis.setCategoryMargin(0.2f);
		//分类轴下(左)边距,就是离左边的距离
		domainAxis.setLowerMargin(0.1);
		//分类轴下(右)边距,就是离最右边的距离
		domainAxis.setUpperMargin(0.1);
		
		//Y 轴
		ValueAxis rangeAxis = plot.getRangeAxis();
		//设置Y轴标题字体
		rangeAxis.setLabelFont(yfont);
		//设置Y轴字体
		rangeAxis.setTickLabelFont(yfont);
		// 字体颜色
		rangeAxis.setLabelPaint(Color.RED); 
	}
}


基于XY的Line 

package com.langhua.line;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.FileOutputStream;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.RectangleInsets;
/**
 *  基于XY的Line
 * @author Administrator
 *
 */
public class XYLine {
	public static void main(String[] args){
		XYSeries series1 = new XYSeries("第一");
		series1.add(1.0, 1.0);
		series1.add(2.0, 4.0);
		series1.add(3.0, 3.0);
		series1.add(4.0, 5.0);
		series1.add(5.0, 5.0);
		series1.add(6.0, 7.0);
		series1.add(7.0, 7.0);
		series1.add(8.0, 8.0);
		
		XYSeries series2 = new XYSeries("第二");
		series2.add(1.0, 5.0);
		series2.add(2.0, 7.0);
		series2.add(3.0, 6.0);
		series2.add(4.0, 8.0);
		series2.add(5.0, 4.0);
		series2.add(6.0, 4.0);
		series2.add(7.0, 2.0);
		series2.add(8.0, 1.0);
		series2.add(9.0, 1.0);
		series2.add(10.0, 1.0);
		series2.add(8.1, 1.2);
		series2.add(8.2, 1.3);
		series2.add(8.5, 1.4);		
		series2.add(11.0, 1.0);
		
		XYSeries series3 = new XYSeries("第三");
		series3.add(3.0, 4.0);
		series3.add(4.0, 3.0);
		series3.add(5.0, 2.0);
		series3.add(6.0, 3.0);
		series3.add(7.0, 6.0);
		series3.add(8.0, 3.0);
		series3.add(9.0, 4.0);
		series3.add(10.0, 3.0);	
		
		XYSeries series4 = new XYSeries("第四");
		series4.add(2.0, 4.0);
		series4.add(3.0, 3.0);
		series4.add(6.0, 2.0);
		series4.add(1.0, 3.0);
		series4.add(2.0, 6.0);
		
		XYSeriesCollection dataset = new XYSeriesCollection();
		dataset.addSeries(series1);
		dataset.addSeries(series2);
		dataset.addSeries(series3);
		dataset.addSeries(series4);
		
		JFreeChart chart = ChartFactory.createXYLineChart("Line Chart例子","X坐标","Y坐标",dataset,PlotOrientation.VERTICAL,true,true,false	);
		XYLine.configFont(chart);
		// 背景色
		chart.setBackgroundPaint(Color.white);
		// 获得XYPlot对象
		XYPlot plot = (XYPlot) chart.getPlot();
		//设置坐标后面的背景色
		plot.setBackgroundPaint(Color.lightGray);
		
		plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
		plot.setDomainGridlinePaint(Color.white);
		plot.setRangeGridlinePaint(Color.white);
		XYLineAndShapeRenderer renderer	= (XYLineAndShapeRenderer) plot.getRenderer();
		renderer.setShapesVisible(true);
		renderer.setShapesFilled(true);
		// change the auto tick unit selection to integer units only...
		NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
		rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
		
		FileOutputStream fos_jpg = null;
		try {
			fos_jpg = new FileOutputStream("c:\\LineXY.jpg");
			ChartUtilities.writeChartAsJPEG(fos_jpg,0.99f,chart,800,600,	null);
			fos_jpg.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 配置字体等信息
	 * @param chart
	 */
	private static void configFont(JFreeChart chart) {
		// 配置字体
		Font xfont = new Font("宋体", Font.CENTER_BASELINE, 12);// X轴
		Font yfont = new Font("宋体", Font.CENTER_BASELINE, 20);// Y轴
		Font kfont = new Font("宋体", Font.CENTER_BASELINE, 18);// 底部
		Font titleFont = new Font("微软雅黑", Font.CENTER_BASELINE, 25); // 图片标题
		XYPlot plot = (XYPlot) chart.getPlot();// 图形的绘制结构对象
		//数据轴网格线条颜色
		plot.setRangeGridlinePaint(Color.BLUE);
		//数据轴网格线条笔触
		plot.setRangeGridlineStroke(new BasicStroke(1.0f));
		// 图片标题
		chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont));
		chart.getLegend().setItemFont(kfont);

		//X轴
		ValueAxis domainAxis = plot.getDomainAxis();
		//设置X轴标题字体
		domainAxis.setLabelFont(xfont);
		//设置X轴字体
		domainAxis.setTickLabelFont(xfont);
		//设置字体颜色
		domainAxis.setTickLabelPaint(Color.BLUE);
		//横轴上的label斜显示
		//domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); 
		//domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);
		//分类轴边距,同种类型之间的距离,比如说Row 1之间的
		//domainAxis.setCategoryMargin(0.2f);
		//分类轴下(左)边距,就是离左边的距离
		domainAxis.setLowerMargin(0.1);
		//分类轴下(右)边距,就是离最右边的距离
		domainAxis.setUpperMargin(0.1);
		
		//Y 轴
		ValueAxis rangeAxis = plot.getRangeAxis();
		//设置Y轴标题字体
		rangeAxis.setLabelFont(yfont);
		//设置Y轴字体
		rangeAxis.setTickLabelFont(yfont);
		// 字体颜色
		rangeAxis.setLabelPaint(Color.RED); 

	}
}


----------------------原创:http://langhua9527.iteye.com/category/66569?show_full=true
分享到:
评论

相关推荐

    JfreeChar学习资料 JfreeChar学习资料

    - **线形图(Line Chart)**: 使用`ChartFactory.createLineChart()`创建,适合表示数据随时间变化的趋势。 - **散点图(Scatter Plot)**: 使用`ChartFactory.createScatterPlot()`创建,用于显示两个变量之间的...

    jfreechar的几个常用图形报表

    JFreeChart是一款强大的Java图表库,它为开发者提供了丰富的图表类型和自定义选项,使得在Java应用程序、Web应用或报告中展示数据变得简单。在这个压缩包中,包含的"JFreeChart"文件很可能是项目源代码或者示例程序...

    jfreechar各种图

    JFreeChart库提供了一个图形用户界面,开发者可以通过设置参数来创建不同类型的图表。首先,你需要导入必要的库,然后创建一个`ChartFactory`实例,根据需要选择对应的图表类型,如`JFreeChart chart = ...

    jfreechar画图源代码

    JFreeChart是一款强大的Java图形库,它允许开发者创建多种类型的图表,如饼状图、柱状图、曲线图等,广泛应用于数据可视化和报告生成。本资料提供的"jfreechar画图源代码"包含了作者自己编写的能运行并显示结果的...

    jfreechar实际例子

    - `BarChartDemo.java`: 创建一个简单的柱状图,展示数据比较。 - `LineChartDemo.java`: 实现一个动态更新的线图,展示时间序列数据。 **5. 数据源** 数据通常存储在`Dataset`对象中,如`DefaultCategoryDataset...

    jfreechar统计图操作技巧

    在实际项目中,结合JFreeChart提供的这些特性,你可以根据需求创建各种复杂的统计图表,使数据可视化变得更加简单和直观。通过熟练掌握这些技巧,可以大大提高开发效率,提升项目质量。在实践中不断探索和尝试,你会...

    JfreeChar实例

    为了使用这些图表,你需要先在Eclipse中创建一个新的Java项目,然后将下载的`jfreeChar`压缩包解压并导入到项目的类路径中。JFreeChart的API提供了一系列的构造函数和方法,通过它们你可以轻松地构建所需的图表。...

    jfreechar Deomo

    通过简单的API调用,开发者可以轻松地生成静态图表,同时,JFreeChart还支持生成动态图表,例如,用于展示实时数据变化。 二、jcommon库解析 jcommon库是JFreeChart的重要依赖,它提供了一些基础的图形组件和布局...

    jfreechar的资料和工具

    创建图表的第一步是选择合适的图表类型,如 BarChart(柱状图)、PieChart(饼图)或 LineChart(线图)。然后,通过 ChartFactory 类的静态方法来创建实例。例如,创建一个简单的柱状图可以这样写: ```java ...

    jfreechart-1.0.19工具

    例如,创建一个简单的柱状图可能包括以下步骤: 1. 创建`CategoryDataset`对象,存储分类数据。 2. 使用`JFreeChart`工厂方法创建图表实例。 3. 配置图表的各个方面,如标题、轴标签、图例等。 4. 创建`ChartPanel`...

    jfreechart的jar包

    - 折线图(Line Chart):适合展示趋势和变化。 - 柱状图(Bar Chart):用于比较类别之间的数量差异。 - 饼图(Pie Chart):直观地显示部分与整体的关系。 - 散点图(Scatter Plot):用于显示两个变量之间的...

    JfreeChar基础代码

    例如,创建一个简单的线图: ```java import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.data.category.DefaultCategoryDataset; public class ChartExample { public ...

    jfreechar英文文档

    2. **图表类型**:文档详尽地讲解了JFreeChart支持的各种图表类型,如条形图(Bar Chart)、饼图(Pie Chart)、折线图(Line Chart)等,并给出了创建这些图表的代码示例。 3. **数据模型**:JFreeChart基于`...

    JfreecharDemo

    **JFreeChart 演示程序 (JfreecharDemo)** **JFreeChart** 是一个用 Java 编写的开源...通过这个示例程序,开发者可以深入理解 JFreeChart 的工作原理,掌握图表创建的基本技巧,并进一步提升 Java 图形化编程的能力。

    JfreeChart包下载

    这个包主要用于生成统计图形,如饼图、柱状图、线图、散点图等,广泛应用于数据分析、报表展示以及监控系统中。在Web开发中,JFreeChart可以帮助开发者动态地在网页上展示数据,便于用户直观理解复杂的数据信息。 ...

    FusionCharts学习资料及源码

    FusionCharts的主要优势在于其易用性和灵活性,使得开发者无需深入图形编程就能生成专业级别的图表,极大地简化了数据可视化的过程。 **FusionCharts与JFreeChart对比** 在Web开发中,JFreeChart曾是Java领域用于...

Global site tag (gtag.js) - Google Analytics