java类中使用Jfreechart的简单实例

 更新时间:2013年08月22日 15:43:45   作者:  
这篇文章介绍了java类中使用Jfreechart的简单实例,有需要的朋友可以参考一下

package com.chart.test;

复制代码 代码如下:

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpSession;

import oracle.jrockit.jfr.openmbean.JFRStatsType;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.LegendTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.RectangleEdge;


public class ChartTest
{
public static void main(String[] args){
ChartTest test=new ChartTest();
test.generateFile(test.getChart());
}

public JFreeChart getChart(){
String series1 ="First";
String series2 ="Second";

String type1 ="Type 1";
String type2 ="Type 2";
String type3 ="Type 3";
String type4 ="Type 4";
String type5 ="Type 5";
String type6 ="Type 6";
String type7 ="Type 7";
DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset();
defaultcategorydataset.addValue(1.0D, series1, type1);
defaultcategorydataset.addValue(4D, series1, type2);
defaultcategorydataset.addValue(3D, series1, type3);
defaultcategorydataset.addValue(5D, series1, type4);
defaultcategorydataset.addValue(5D, series1, type5);
defaultcategorydataset.addValue(7D, series1, type6);
defaultcategorydataset.addValue(7D, series1, type7);


defaultcategorydataset.addValue(5D, series2, type1);
defaultcategorydataset.addValue(7D, series2, type2);
defaultcategorydataset.addValue(6D, series2, type3);
defaultcategorydataset.addValue(8D, series2, type4);
defaultcategorydataset.addValue(4D, series2, type5);
defaultcategorydataset.addValue(4D, series2, type6);
defaultcategorydataset.addValue(2D, series2, type7);


JFreeChart jfreechart = ChartFactory.createLineChart("Line Chart Demo 1","Type","Value",defaultcategorydataset,PlotOrientation.VERTICAL,true,true,false);
//  ChartFactory.createLineChart(title, categoryAxisLabel, valueAxisLabel, dataset, orientation, legend, tooltips, urls)
//  上面语句legend设置为false时,表示新建的jfreechart无图例,为true时,自带图例,默认位置为底部。
jfreechart.getLegend().setPosition(RectangleEdge.RIGHT);//获取图例,设置位置

//  LegendTitle legendTitle = new LegendTitle(jfreechart.getPlot());//创建图例,若有默认的,仍然创建,此时存在两个。
//  legendTitle.setPosition(RectangleEdge.RIGHT);//设置图例的位置
//  jfreechart.addLegend(legendTitle);//图表中添加图例

jfreechart.setBackgroundPaint(Color.white);//设置图例的背景色

CategoryPlot categoryplot = (CategoryPlot)jfreechart.getPlot();

categoryplot.setBackgroundPaint(Color.lightGray);
categoryplot.setDomainGridlinesVisible(true);
categoryplot.setRangeGridlinesVisible(true);
categoryplot.setDomainGridlinePaint(Color.white);//设置横坐标网格线
categoryplot.setRangeGridlinePaint(Color.white);//设置纵坐标网格线

// 1、对标题
Font font1 = new Font("黑体",Font.BOLD, 14); // 设定字体、类型、字号
jfreechart.getTitle().setFont(font1); // 标题

// 3、下面的方块区域是 LegendTitle 对象
Font font3 = new Font("隶书",Font.BOLD, 12); // 设定字体、类型、字号
jfreechart.getLegend().setItemFont(font3);// 最下方
// 这是处理Plot里面的横轴,同理可以正理竖轴
CategoryAxis categoryaxis = categoryplot.getDomainAxis(); // 横轴上的
//纵坐标换行显示
//  categoryaxis.setMaximumCategoryLabelLines(10);//行数,根据需要自己设
//  categoryaxis.setMaximumCategoryLabelWidthRatio(0.5f);//每行宽度,这里设一个汉字宽

categoryaxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);// 45度倾斜,可以改成其他,默认是水平

NumberAxis numberaxis = (NumberAxis)categoryplot.getRangeAxis();
numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());// 数据轴的数据标签(可以只显示整数标签,需要将AutoTickUnitSelection设false)
numberaxis.setAutoRangeIncludesZero(true);//是否强制在自动选择的数据范围中包含0

categoryaxis.setTickLabelFont(new Font("SansSerif",Font.BOLD, 12));//坐标轴标尺值字体
numberaxis.setTickLabelFont(new Font("SimSun", Font.BOLD, 12));//
// 2、对图里面的汉字设定,也就是Plot的设定
Font font2 = new Font("SimSun", Font.BOLD, 16); // 设定字体、类型、字号
categoryaxis.setLabelFont(font2);//坐标轴标题字体
numberaxis.setLabelFont(font2);

 

LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer)categoryplot.getRenderer();
lineandshaperenderer.setShapesVisible(true); //series 点(即数据点)可见

lineandshaperenderer.setSeriesStroke(0, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {
10F, 6F
}, 0.0F)); //定义series为"First"的(即series1)点之间的连线 ,这里是虚线,默认是直线
lineandshaperenderer.setSeriesStroke(1, new BasicStroke(2.0F, 1, 1, 1.0F, new float[] {
6F, 6F
}, 0.0F)); //定义series为"Second"的(即series2)点之间的连线

return jfreechart;    //返回Jfreechart
}

public void generateFile(JFreeChart chart){
  String fileName = null;
  try {
    ChartUtilities.saveChartAsJPEG(new File("C:\\PieChart.jpg"),chart,600,600); //生成图表文件到指定位置
  } catch (IOException e)
  {
  e.printStackTrace();
  }
}
public String getFileName(JFreeChart chart,HttpSession session,PrintWriter pw){
  String fileName = null;
  ChartRenderingInfo info=new ChartRenderingInfo(new StandardEntityCollection());
  try {
    fileName = ServletUtilities.saveChartAsPNG(chart, 700, 450, info, session);  //生成临时文件
    ChartUtilities.writeImageMap(pw, fileName, info, false);
    pw.flush();
  }
  catch (IOException e)
  {
  e.printStackTrace();
  }

  //  String graphURL = request.getContextPath()+ "/servlet/DisplayChart?fileName=" + fileName;
  //  request.setAttribute("fileName",fileName);
  // request.setAttribute("graphURL",graphURL);
  return fileName;//返回生成图片的文件名 ,传入jsp
 }

}


jsp中使用:
复制代码 代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="com.chart.test.*"%>
<%@ page import = "java.io.PrintWriter" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%
ChartTest chart=new ChartTest();
String fileName=chart.getFileName(chart.getChart(), session, new PrintWriter(out));
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + fileName;
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'JspChart.jsp' starting page</title>
</head>

<body>

<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="<%= fileName %>">
</body>
</html>

相关文章

  • 新手小白入门必学JAVA面向对象之多态

    新手小白入门必学JAVA面向对象之多态

    说到多态,一定离不开其它两大特性:封装和继承,下面这篇文章主要给大家介绍了关于新手小白入门必学JAVA面向对象之多态的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • 基于SpringMVC @RequestMapping的参数和用法

    基于SpringMVC @RequestMapping的参数和用法

    这篇文章主要介绍了SpringMVC @RequestMapping的参数和用法解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Mybatis入门教程(四)之mybatis动态sql

    Mybatis入门教程(四)之mybatis动态sql

    这篇文章主要介绍了Mybatis入门教程(四)之mybatis动态sql的相关资料,涉及到动态sql及动态sql的作用知识,本文介绍的非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • Java实现stream的三个常用方式(toMap,groupingBy,findFirst)

    Java实现stream的三个常用方式(toMap,groupingBy,findFirst)

    本文主要介绍了Java实现stream的三个常用方式,主要包括toMap,groupingBy,findFirst,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Springboot处理配置CORS跨域请求时碰到的坑

    Springboot处理配置CORS跨域请求时碰到的坑

    本篇文章介绍了我在开发过程中遇到的一个问题,以及解决该问题的过程及思路,通读本篇对大家的学习或工作具有一定的价值,需要的朋友可以参考下
    2021-09-09
  • 29个要点帮你完成java代码优化

    29个要点帮你完成java代码优化

    本文给大家分享的是个人总结的29个java优化需要注意的地方,非常的全面细致,推荐给大家,有需要的小伙伴可以参考下
    2015-03-03
  • Maven学习----Maven安装与环境变量配置教程

    Maven学习----Maven安装与环境变量配置教程

    这篇文章主要给大家介绍了关于如何利用Maven入手Spring Boot第一个程序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • Java 基础 byte[]与各种数据类型互相转换的简单示例

    Java 基础 byte[]与各种数据类型互相转换的简单示例

    这篇文章主要介绍了Java 基础 byte[]与各种数据类型互相转换的简单示例的相关资料,这里对byte[]类型对long,int,double,float,short,cahr,object,string类型相互转换的实例,需要的朋友可以参考下
    2017-01-01
  • java实现的AES秘钥生成算法示例

    java实现的AES秘钥生成算法示例

    这篇文章主要介绍了java实现的AES秘钥生成算法,结合实例形式分析了AES秘钥生成算法原理与实现技巧,需要的朋友可以参考下
    2017-01-01
  • springboot以FTP方式上传文件到远程服务器

    springboot以FTP方式上传文件到远程服务器

    这篇文章主要介绍了springboot以FTP方式上传文件到远程服务器,需要的朋友可以参考下
    2019-12-12

最新评论