1.创建数据集: // 创建数据集 public DefaultCategoryDataset getDataSetYear(List<Object[]> list,List<Object[]> sublist) { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); // 添加数据(数据,纵坐标,横坐标) dataset.addValue(0, "收入", "一月"); return dataset; } 2.根据数据集创建chart: public JFreeChart createLineChart(DefaultCategoryDataset dataset, long value,String year,String name) { // 设置字体,防止乱码 Font font = new Font("宋体", Font.BOLD, 16); TextTitle title = new TextTitle(name+" "+year+"本周收支曲线", font); // 创建JFreechart对象,3D状的 JFreeChart chart = ChartFactory.createLineChart3D("本周收支曲线", "星期", "金额", dataset, PlotOrientation.VERTICAL, true, true, false); // 数据区设置 chart.setTitle(title); chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12)); CategoryPlot plot = chart.getCategoryPlot(); plot.setBackgroundPaint(Color.white); // 数据区背景色 // 创建X轴 CategoryAxis domainAxis = plot.getDomainAxis(); // 创建y轴 NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11)); domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12)); domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11)); rangeAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12)); // 数据轴的数据标签(可以只显示整数标签,需要将AutoTickUnitSelection设false) rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); rangeAxis.setTickMarksVisible(true); // 是否显示零点 rangeAxis.setAutoRangeIncludesZero(true); // 数据轴上(右)边距 rangeAxis.setUpperMargin(0.02); // Y轴名称的倾斜角度 rangeAxis.setLabelAngle(0.3); // 设置数据轴的数据范围,value是y轴最大值 rangeAxis.setRange(new Range(0, value)); // 设置刻度波动值,没有设置自动变化间隔 //rangeAxis.setTickUnit(new NumberTickUnit(100)); // 数据线设置 LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot .getRenderer(); // 设置每个曲线的颜色 renderer.setSeriesPaint(0, Color.pink); renderer.setSeriesPaint(1, new Color(0, 100, 255)); renderer.setSeriesPaint(2, Color.green); renderer.setSeriesPaint(3, new Color(24, 68, 100)); return chart; } 3.生成图片: public void SaveFileAsJPEG(String fileName, JFreeChart chart, int w, int h) { // 生成图形,保存到指定文件,文件类型为jpg try { ChartUtilities.saveChartAsPNG(new File(fileName), chart, w, h); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }