package jfreechart;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.ui.RectangleInsets;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.labels.*;
import org.jfree.ui.*;
/**
* 创建JFreeChart Line Chart(折线图)
*/
public class CopyOfCreateJFreeChartLine {
public static void main(String[] args) {
// 步骤1:创建CategoryDataset对象(准备数据)
TimeSeriesCollection dataset = createDataset();
// 步骤2:根据Dataset 生成JFreeChart对象,以及做相应的设置
JFreeChart freeChart = createChart(dataset);
// 步骤3:将JFreeChart对象输出到文件,Servlet输出流等
saveAsFile(freeChart, "c://jfreechart//testline.png", 500, 300);
}
// 创建TimeSeriesCollection对象
public static TimeSeriesCollection createDataset() {
TimeSeriesCollection lineDataset = new TimeSeriesCollection();
TimeSeries timeSeries = new TimeSeries("统计");
timeSeries.add(new Month(1, 2007), 11200);
timeSeries.add(new Month(2, 2007), 9000);
timeSeries.add(new Month(3, 2007), 6200);
timeSeries.add(new Month(4, 2007), 8200);
timeSeries.add(new Month(5, 2007), 8200);
timeSeries.add(new Month(6, 2007), 12200);
timeSeries.add(new Month(7, 2007), 13200);
timeSeries.add(new Month(8, 2007), 8300);
timeSeries.add(new Month(9, 2007), 12400);
timeSeries.add(new Month(10, 2007), 12500);
timeSeries.add(new Month(11, 2007), 13600);
timeSeries.add(new Month(12, 2007), 12500);
TimeSeries timeSeries1 = new TimeSeries("统计1");
timeSeries1.add(new Month(1, 2007), 112001);
timeSeries1.add(new Month(2, 2007), 90001);
timeSeries1.add(new Month(3, 2007), 62001);
timeSeries1.add(new Month(4, 2007), 82001);
timeSeries1.add(new Month(5, 2007), 82001);
timeSeries1.add(new Month(6, 2007), 122001);
timeSeries1.add(new Month(7, 2007), 132001);
timeSeries1.add(new Month(8, 2007), 83001);
timeSeries1.add(new Month(9, 2007), 124001);
timeSeries1.add(new Month(10, 2007), 125001);
timeSeries1.add(new Month(11, 2007), 136001);
timeSeries1.add(new Month(12, 2007), 125001);
lineDataset.addSeries(timeSeries);
lineDataset.addSeries(timeSeries1);
return lineDataset;
}
// 根据CategoryDataset生成JFreeChart对象
public static JFreeChart createChart(TimeSeriesCollection lineDataset) {
JFreeChart jfreechart = ChartFactory.createTimeSeriesChart(
"统计", // 标题
"月份", // categoryAxisLabel (category轴,横轴,X轴的标签)
"访问量", // valueAxisLabel(value轴,纵轴,Y轴的标签)
lineDataset,// dataset
true, // legend
true, // tooltips
true); // URLs
// 配置字体(解决中文乱码的通用方法)
Font xfont = new Font("宋体", Font.PLAIN, 16); // X轴
Font yfont = new Font("宋体", Font.PLAIN, 16); // Y轴
Font kfont = new Font("宋体", Font.PLAIN, 14); // 底部
Font titleFont = new Font("隶书", Font.BOLD, 20); // 图片标题
jfreechart.setBackgroundPaint(Color.white);
XYPlot xyplot = (XYPlot) jfreechart.getPlot(); // 获得 plot:XYPlot!
xyplot.getDomainAxis().setLabelFont(xfont);
xyplot.getRangeAxis().setLabelFont(yfont);
jfreechart.getLegend().setItemFont(kfont);
jfreechart.getTitle().setFont(titleFont);
//设置时间格式,同时也解决了乱码问题
DateAxis dateaxis = (DateAxis)xyplot.getDomainAxis();
SimpleDateFormat sfd = new SimpleDateFormat("yy-MM");
dateaxis.setDateFormatOverride(sfd);
xyplot.setDomainAxis(dateaxis);
// 以下的设置可以由用户定制,也可以省略
XYPlot plot = (XYPlot) jfreechart.getPlot();
XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer) plot.getRenderer();
// 设置网格背景颜色
plot.setBackgroundPaint(Color.white);
// 设置网格竖线颜色
plot.setDomainGridlinePaint(Color.pink);
// 设置网格横线颜色
plot.setRangeGridlinePaint(Color.pink);
// 设置曲线图与xy轴的距离
plot.setAxisOffset(new RectangleInsets(0D, 0D, 0D, 10D));
// 设置曲线是否显示数据点
// xylineandshaperenderer.setBaseShapesVisible(true);
// 设置曲线显示各数据点的值
// XYItemRenderer xyitem = plot.getRenderer();
// xyitem.setBaseItemLabelsVisible(true);
// xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(
// ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
// xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
// xyitem.setBaseItemLabelFont(new Font("Dialog", 1, 14));
// plot.setRenderer(xyitem);
return jfreechart;
}
// 保存为文件
public static void saveAsFile(JFreeChart chart, String outputPath,
int weight, int height) {
FileOutputStream out = null;
try {
File outFile = new File(outputPath);
if (!outFile.getParentFile().exists()) {
outFile.getParentFile().mkdirs();
}
out = new FileOutputStream(outputPath);
// 保存为PNG文件
ChartUtilities.writeChartAsPNG(out, chart, 600, 350);
// 保存为JPEG文件
//ChartUtilities.writeChartAsJPEG(out, chart, 500, 400);
out.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
// do nothing
}
}
}
}
}
分享到:
相关推荐
java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图
在Java Web开发中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,而JFreeChart则是一个强大的Java图表库,能够帮助开发者生成各种复杂的图表,包括折线图。本教程将详细介绍如何在JSP中利用JFreeChart库来...
JFreeChart是一个流行的Java库,用于生成各种类型的图表,包括折线图、饼图和柱状图,甚至堆栈柱状图。这个压缩包中的"CreateChartServiceImpl.java"文件很可能包含了一个实现这些功能的服务类。 首先,我们要理解...
Java JFreeChart库是用于创建高质量图表的开源项目,它为Java开发者提供了丰富的图形类型,如折线图、饼图和柱状图等。在Java后台生成这些图表,可以用于数据可视化,帮助用户更好地理解存储在数据库或其他数据源中...
标题中提到的“jfreechart生成折线图、饼图、柱状图、堆栈柱状图”是指使用Java的一个开源图形库JFreeChart来创建不同类型的统计图表。JFreeChart是一个功能全面、成熟的Java图表库,广泛应用于各种应用程序中进行...
《使用JFreeChart生成折线图、饼图、柱状图和堆栈柱状图》 JFreeChart是一款强大的开源Java图表库,它允许开发者在应用程序、报告或网页中生成各种高质量的图表,包括折线图、饼图、柱状图和堆栈柱状图等。这篇文档...
最后,使用 `ChartFactory` 类的静态方法,如 `createLineChart()`,生成实际的折线图。 3. **配置图表** JFreeChart 允许开发者自定义图表的许多方面,例如颜色、线条样式、字体、背景色等。此外,还可以添加图例...
标题 "jfreechart部署在Linux服务器上生成图片乱码的解决方案" 涉及到的主要知识点是关于Java图形库JFreeChart在Linux环境中的使用,特别是解决中文字符乱码的问题。JFreeChart是一个广泛使用的开源Java库,它允许...
JFreeChart是一款强大的Java图形库,它允许开发者创建多种类型的图表,包括折线图、柱状图、饼图、散点图等。在本主题中,我们将深入探讨如何使用JFreeChart来绘制平面和3D的折线图。 首先,让我们了解折线图的基本...
在Java编程环境中,JFreeChart库是一个强大的工具,用于创建各种复杂的图表,包括柱状图、折线图和雷达图。这些图表对于数据可视化和数据分析非常有用,可以帮助开发者直观地展示大量信息。以下是对给定文件中每个...
jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707
利用jfreechart绘制的漂亮的折线图,实现双纵坐标,折线点标签还带箭头指示,非常直观,需要提前下载jfreechart.jar文件,否则我的类会报错,也即是要配置运行环境
JFreeChart是一款强大的Java图表库,它允许开发者在应用程序、Swing组件或Web应用中创建各种图表,如柱状图、饼图、折线图等。这个库支持丰富的定制选项,使得图表可以按照用户需求进行个性化设计。在这个...
在Java编程领域,JFreeChart是一个非常流行的图表库,它允许开发者创建各种复杂的数据可视化图形,包括折线图、柱状图、饼图等。在本篇博客中,"JfreeChart画双Y轴折线图"的主题,将探讨如何使用JFreeChart库来创建...
public JFreeChart createChart(String Ytitle, String title, CategoryDataset lineData, CategoryDataset barData) { //参考附件 return chart; } //struts 部分 <!--begin 维优特例 --> ...
在这个"JFreeChart画折线实例"中,我们将深入探讨如何利用JFreeChart库来创建折线图,并将其保存为本地文件。下面将详细讲解相关知识点。 首先,JFreeChart库的引入是通过在项目中添加其对应的依赖或jar包。如果你...
标题“Spring+JFreeChart 自动生成统计图”涉及的是在Java开发环境中,利用Spring框架和JFreeChart库来动态生成图表的技巧。这篇文章可能是介绍如何在Spring应用中集成JFreeChart,以便为数据可视化提供服务。 ...
JFreeChart双Y轴折线图实例,可以直接运行,实例类为LineChartDemo1.JAVA,有注释。 若想在web工程使用只需如下。 String filename = ServletUtilities.saveChartAsPNG(jfreechart, 600, 400, null, session); ...