JFreeChart---折线图

这篇博客介绍了如何使用JFreeChart库在Java中创建折线图,详细阐述了通过CategoryDataset和XYDataSet两种方法实现的过程,并提供了相应的示例源码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建折线图的两种方式:

1、使用CategoryDataset创建折线图

2、使用XYDataSet创建折线图

样例:


源码:

	@Test
	public void testCreateByDefaultCategoryDataset() {
		
		DefaultCategoryDataset dataset = new DefaultCategoryDataset();
		dataset.addValue(212.0, "Classes", "JDK 1.0");
		dataset.addValue(504.0, "Classes", "JDK 1.1");
		dataset.addValue(1520.0, "Classes", "JDK 1.2");
		dataset.addValue(1842.0, "Classes", "JDK 1.3");
		dataset.addValue(2991.0, "Classes", "JDK 1.4");
		dataset.addValue(3500.0, "Classes", "JDK 1.5");
		
		JFreeChart chart = ChartFactory.createLineChart(
				"Java Standard Class Library", 	//图标标题
				"", 							//X轴标题
				"Class Count", 					//Y轴标题
				dataset, 						//数据集
				PlotOrientation.VERTICAL, 		//方向
				false, 							//是否包含图例
				true, 							//提示信息是否显示
				false);							//是否使用URLS
		chart.addSubtitle(new TextTitle("Number if Classes By Release"));	//副标题
		
		TextTitle textTitle = new TextTitle("Source: Java in A Nutshell (5th Edition) by David Flanagan (O' Reilly)");
		textTitle.setFont(new Font("SansSerif", 0, 10));
		textTitle.setPosition(RectangleEdge.BOTTOM);
		textTitle.setHorizontalAlignment(HorizontalAlignment.RIGHT);
		chart.addSubtitle(textTitle);
		
		chart.setBackgroundPaint(Color.WHITE);
		
		CategoryPlot plot = chart.getCategoryPlot();
		plot.setBackgroundPaint(Color.LIGHT_GRAY);
		plot.setRangeGridlinePaint(Color.WHITE);
		
		LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();
		renderer.setShapesVisible(true);
		renderer.setDrawOutlines(true);
		renderer.setUseFillPaint(true);
		
		NumberAxis axis = (NumberAxis) plot.getRangeAxis();
		axis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
		
		try {
			ChartUtilities.writeChartAsJPEG(new FileOutputStream("E:/chart/LineChart.jpg"), chart, 400, 300, null);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


源码:

	@Test
	public void testCreateByXYDataSet() {
		
		XYSeries series1 = new XYSeries("First");
		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, 6.0);
		series1.add(6.0, 7.0);
		series1.add(7.0, 7.0);
		series1.add(8.0, 8.0);
		
		XYSeries series2 = new XYSeries("Second");
		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);
		
		XYSeries series3 = new XYSeries("Third");
		series3.add(1.0, 4.0);
		series3.add(2.0, 3.0);
		series3.add(3.0, 2.0);
		series3.add(4.0, 3.0);
		series3.add(5.0, 6.0);
		series3.add(6.0, 3.0);
		series3.add(7.0, 4.0);
		series3.add(8.0, 3.0);
		
		XYSeriesCollection dataset = new XYSeriesCollection();
		dataset.addSeries(series1);
		dataset.addSeries(series2);
		dataset.addSeries(series3);
		
		JFreeChart chart = ChartFactory.createXYLineChart("XY",
				"X",
				"Y", 
				dataset,
				PlotOrientation.VERTICAL,
				true,
				true, 
				false);
		chart.setBackgroundPaint(Color.WHITE);	//图表背景颜色
		
		//改变图区背景颜色、轴平移、网格线颜色
		XYPlot plot = (XYPlot) chart.getPlot();
		plot.setBackgroundPaint(Color.LIGHT_GRAY);//背景颜色
		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);
		
		//只显示整数的刻度值
		NumberAxis axis = (NumberAxis) plot.getRangeAxis();
		axis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
		
		try {
			ChartUtilities.writeChartAsJPEG(new FileOutputStream("E:/chart/LineChart2.jpg"), chart, 400, 300, null);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值