`

Jfreechart学习笔记3-简单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.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); 

	}
}







  • 大小: 111.1 KB
  • 大小: 110.3 KB
分享到:
评论

相关推荐

    Jfreechart学习笔记1-简单Pie图形创建

    **JFreeChart学习笔记1 - 简单Pie图创建** 在Java开发中,我们经常需要展示数据,而饼图(Pie Chart)是一种常见的数据可视化工具,尤其适用于展示各项比例关系。JFreeChart是一个强大的开源Java图表库,它提供了...

    Jfreechart学习笔记2-简单bar图形创建

    在本文中,我们将深入探讨如何使用JFreeChart库在Java中创建简单的柱状图,以及如何扩展到3D效果。JFreeChart是一个流行的开源图表库,适用于多种图表类型,包括条形图、线形图、饼图等。通过学习本文,你将能够利用...

    jfreechart1.0.3-demo-src

    JFreeChart 是一个广泛使用的 Java 图形库,它提供了丰富的图表类型,包括饼图、柱状图、线图、散点图等,使得开发者能够在 Java 应用程序中方便地创建高质量的图表。"jfreechart1.0.3-demo-src" 是 JFreeChart ...

    jfreechart,jfreechart-1.0.13,jfreechart-1.0.13,jfreechart

    压缩包中的例子文件是学习JFreeChart的好资源,它们展示了如何创建和定制各种图表。通过分析源代码,开发者可以快速上手,并了解到如何将JFreeChart集成到自己的项目中。 4. **兼容性与性能**: JFreeChart是基于...

    jfreechart-1.0.19

    JFreeChart 是一个功能丰富的开源Java类库,专为在Java应用程序和Web应用中创建各种类型的图表而设计。这个库提供了广泛的数据可视化功能,包括折线图、柱状图、饼图、散点图、甘特图以及更多其他类型,使得开发者...

    struts2-jfreechart-plugin-2.1.8.1.jar

    struts2-jfreechart-plugin-2.1.8.1.jar

    JFreeChart中文api (JFreeChart-1.0.5-Ch.chm)

    JFreeChart中文api (JFreeChart-1.0.5-Ch.chm) JFreeChart中文api (JFreeChart-1.0.5-Ch.chm)

    jfreechart-1.0.19-demo-src

    jfreechart-1.0.19压缩包中有一个jfreechart-1.0.19-demo.jar,里面演示了各种图表的制作案例,包括BarChart、LineChart、PieChart、TimeSeriesChart、XYSeries等等,共309个例子,现开放源码,请各位下载,欢迎交流...

    jfreechart-1.0.19-Demo-Source 源代码

    - **jFreeChartDemo**: 这是 JFreeChart 的演示程序,包含了各种类型的图表示例,这些示例展示了如何创建和定制图表,是学习 JFreeChart 的绝佳起点。 2. **图表创建** - **ChartFactory**: JFreeChart 提供了一...

    jfreechart-0.9.21 jar包和jfreechart-0.9.21-demo

    jfreechart-0.9.21的jar包和jfreechart-0.9.21-demo

    struts2-jfreechart-plugin-2.0.11.jar

    struts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jar

    jfreechart-1.0.19-demo.src

    5. **示例代码**:“20161128JFreeChart-Demo”可能是一个包含多个示例程序的目录,展示了如何使用JFreeChart库创建各种图表,包括但不限于简单的静态图表、动态更新的图表、自定义颜色和样式等。通过阅读和运行这些...

    jfreechart-1.0.19.jar和jcommon-1.0.23.jar

    JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面: pie charts (2D and 3D):饼图(平面和立体) bar charts (regular and stacked, with an optional 3D ...

    JfreeChart的学习--饼形图

    3. 创建饼图:使用`JFreeChart`类的`createPieChart(String title, PieDataset dataset)`方法创建饼图实例。 ```java JFreeChart chart = ChartFactory.createPieChart( "饼图示例", // 图表标题 dataset // 数据...

    JFreeChart1.0.13-demo-src(无错版)

    项目中要用到JFreeChart做图,但是DEMO源码要收费的,而且在CSDN上下载都是反编译DEMO出来的,到处都是异常就拿出来骗分,我自己花了1个小时间把所有异常都改掉了,并且测试无错。 这个包是我直接把我Eclipse项目...

    jfreechart-1.0.6-demo源码

    "jfreechart-1.0.6-demo"源码是JFreeChart的一个示例集合,它展示了如何创建并定制各种类型的图表,是学习和理解JFreeChart功能的最佳起点。通过分析这些示例代码,开发者可以快速掌握JFreeChart的API用法和设计...

    JfreeChart1.5.0

    **JFreeChart 1.5.0:Java 开源图表库详解** JFreeChart 是一个广泛使用的 Java 图形库,其版本1.5.0 提供了丰富的...无论是简单的数据展示还是复杂的分析需求,JFreeChart 都能以直观、美观的方式帮助我们理解数据。

    jfreechart-1.0.13-demo.src

    总结来说,`jfreechart-1.0.13-demo.src` 提供的源代码是学习和研究 JFreeChart 的宝贵资源,通过深入学习这些示例,开发者不仅可以掌握图表的基本创建方法,还能了解如何进行高级定制和优化,提升 Java 图表开发...

    jfreechart-1.0.1-demo.rar

    1. **示例代码**:这些代码展示了如何创建和配置各种图表,是学习JFreeChart的最佳起点。通过阅读和运行这些示例,你可以了解如何利用JFreeChart进行数据可视化。 2. **图表演示**:包含各种类型的图表展示,每种...

Global site tag (gtag.js) - Google Analytics