Jfreechart-Jfreechart的使用(图表绘制)[线图]

程祺
2023-12-01
package cn.itcast.chart;

import java.awt.Font;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryAxis3D;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberAxis3D;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

public class LineDemo {
	public static void main(String[] args) {
		
		String title="用户统计报表(所属单位)";//第一个参数:主标题
		String categoryAxisLabel="所属单位名称"; //第二个参数:x轴的标签
		String valueAxisLabel="数量";//第三个参数:y轴显示的标签
		PlotOrientation orientation=PlotOrientation.VERTICAL;//第五个参数:图形的显示形式(水平、垂直)
		boolean legend=true;//第六个参数:是否显示子标题
		boolean tooltips=true;//第七个参数:是否生成提示的标签
		boolean urls=true;//第八个参数:是否生成url链接
		
		//第四个参数图表显示的数据集合
		DefaultCategoryDataset dataset=new DefaultCategoryDataset();
		dataset.addValue(13, "所属单位", "北京");
		dataset.addValue(6, "所属单位", "深圳");
		dataset.addValue(2, "所属单位", "上海");
		
		
		
		JFreeChart jFreeChart=ChartFactory.createLineChart(title, categoryAxisLabel, valueAxisLabel, dataset, orientation, legend, tooltips, urls);
	//===========================================================================================
		//处理图形上的乱码
		Font font1=new Font("宋体",Font.BOLD,18);
		Font font2=new Font("宋体",Font.BOLD,15);
		jFreeChart.getTitle().setFont(font1);//处理主标题乱码
		jFreeChart.getLegend().setItemFont(font1);;//处理子标题乱码
			//获取图表区域对象
		CategoryPlot categoryPlot=(CategoryPlot) jFreeChart.getPlot();
				//获取X轴对象
		CategoryAxis  categoryAxis=(CategoryAxis) categoryPlot.getDomainAxis();
				//获取Y轴对象
		NumberAxis numberAxis=(NumberAxis) categoryPlot.getRangeAxis();
		
		
		categoryAxis.setTickLabelFont(font2);//处理X轴上的乱码
		categoryAxis.setLabelFont(font2);//处理X轴外的乱码
		numberAxis.setTickLabelFont(font2);//处理Y轴上的乱码
		numberAxis.setLabelFont(font2);//处理Y轴外的乱码
		
		//处理Y轴上显示的刻度,以1作为一格
		numberAxis.setAutoTickUnitSelection(false);
			//设置递增单位
		NumberTickUnit unit=new NumberTickUnit(1);
		numberAxis.setTickUnit(unit);
	//=====================================================================================================
		//获取绘图区域对象
		LineAndShapeRenderer lineAndShapeRenderer=(LineAndShapeRenderer) categoryPlot.getRenderer();
			//在图形上显示数字
		StandardCategoryItemLabelGenerator generator=new StandardCategoryItemLabelGenerator();
		lineAndShapeRenderer.setBaseItemLabelGenerator(generator);
		lineAndShapeRenderer.setBaseItemLabelsVisible(true);
		lineAndShapeRenderer.setBaseItemLabelFont(font2);
			/*
			 * 在图形上添加转折点(使用小矩形显示)
			 * 第一个参数:第几条线
			 * 第二个参数:形状
			 */
		lineAndShapeRenderer.setSeriesShape(0, new java.awt.Rectangle(10,10));
		lineAndShapeRenderer.setSeriesShapesVisible(0, true);
		
		
	//======================================================================================================	
		//使用ChartFrame对象显示图像
		ChartFrame frame=new ChartFrame("xyz",jFreeChart);
		frame.setVisible(true);
		frame.pack();
	}
}

 类似资料: