涓???JFreeChart??浠?缁?涓??峰??
JFreeChart寮???????涓?涓?寮?婧???Java?懼艦寮?????,瀹?浠??卞艦?撅?楗煎艦?撅??伴?瘋揪?撅??$???劇??绛?????涓???,??浠ュ??/s,b/s,???蟲??瀹??剁??澧??借?戒??捐韓????
褰?????JFreeChart?????扮????涓?freechart-1.0.0-rc1.zip????浠ュ??
????http://www.jfree.org/jfreechart/ ... asspath??澧?????涓???????
浜???JFreeChart???烘??浣跨??
涓?璁哄??寤虹????浠?涔??撅?JFreeChart?介?靛驚浠ヤ???杩?涓?浣跨?ㄦ?ラ?わ?
1??寤虹??Dataset?????????版???藉???懼??ataset涓?????(??寤轟?涓??版??婧?锛?dataset锛??ュ????灏?瑕??ㄥ?懼艦涓??劇ず???版??)
2??寤虹??JFreeChart??灏?dataset涓????版??瀵煎?ュ??FreeChart涓???(??寤轟?涓? JFreeChart 瀵矽薄?ヤ唬琛ㄨ??劇ず???懼艦 )
3??璁劇疆JFreeChart???劇ず灞??с??杩?涓?姝ュ??浠ョ???ワ?浣跨?ㄩ?璁ょ??JFreeChart?劇ず灞??с??
3??娓叉???捐〃???崇?????劇????
4??椤甸?㈠?劇???劇ず??
??瑕???绫誨???ュ?o?
org.jfree.data.general.Dataset ?????版??婧?绫婚?借?瀹??扮???ュ??
org.jfree.chart.ChartFactory ?卞???ヤ駭?? JFreeChart 瀵矽薄
org.jfree.chart.JFreeChart ????瀵瑰?懼艦??璋??撮?芥????杩?瀹????锛?
org.jfree.chart.plot.Plot ??杩?JFreeChart 瀵矽薄?峰?瀹?锛??跺??????杩?瀹?瀵瑰?懼艦澶??ㄩ?ㄥ??锛?渚?锛?????杞達?璋???
娉ㄦ??锛?瀹???寰?澶?瀛?绫夥?涓????戒?娑????闆????瀛?绫夥?
org.jfree.chart.renderer.AbstractRenderer ??杩?JFreeChart 瀵矽薄?峰?瀹?锛??跺??????杩?瀹?瀵瑰?懼艦???ㄩ?ㄥ??(渚?锛???绾跨??绫誨??锛?璋??淬?????鳳???瀵逛???绫誨?????ヨ〃?撅?瀹?????涓?????瀛?绫誨???幫??ㄤ??㈡??浠?绠?绉闆??涓?Renderer
涓???JFreeChart浣跨?ㄧ???蜂?渚?瀛?
??eb搴??ㄤ腑??渚?瀛?
/*
* ??寤烘?ユ?? 2006-8-1
* @author:hong
* FileName:LineXYChart.java
*/
package com.hong.bean;
import java.awt.Color;
import java.awt.Font;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import javax.servlet.http.HttpSession;
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.DateAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.time.Day;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.RectangleInsets;
/**
* @author hong ?茬嚎?劇??缁???
*/
public class LineXYChart
{
? ? /**
? ???* 杩????????劇??????浠跺??
? ???* @param session
? ???* @param pw
? ???* @return ?????劇??????浠跺??
? ???*/
? ? public String getLineXYChart(HttpSession session, PrintWriter pw)
? ? {
? ?? ???XYDataset dataset = this.createDateSet();//寤虹???版????
? ?? ???String fileName = null;
? ?? ???//寤虹??JFreeChart
? ?? ???JFreeChart chart = ChartFactory.createTimeSeriesChart(
? ?? ?? ?? ?? ? "JFreeChart?堕?存?茬嚎搴?????, // title
? ?? ?? ?? ?? ? "Date", // x-axis label
? ?? ?? ?? ?? ? "Price", // y-axis label
? ?? ?? ?? ?? ? dataset, // data
? ?? ?? ?? ?? ? true, // create legend?
? ?? ?? ?? ?? ? true, // generate tooltips?
? ?? ?? ?? ?? ? false // generate URLs?
? ?? ?? ?? ?? ? );
? ?? ???//璁劇疆JFreeChart???劇ず灞???瀵瑰?懼艦澶??ㄩ?ㄥ??杩?琛?璋???
? ?? ???chart.setBackgroundPaint(Color.red);//璁劇疆?茬嚎?捐??????
? ?? ???//璁劇疆瀛?浣?澶у?锛?褰㈢??
? ?? ???Font font = new Font("瀹?浣?", Font.BOLD, 16);
? ?? ???TextTitle title = new TextTitle("JFreeChart?堕?存?茬嚎搴?????, font);
? ?? ???chart.setTitle(title);
? ?? ???XYPlot plot = (XYPlot) chart.getPlot();//?峰???懼艦???誨?
? ?? ???plot.setBackgroundPaint(Color.lightGray);//璁劇疆缃??艱??????
? ?? ???plot.setDomainGridlinePaint(Color.green);//璁劇疆缃??肩??绾?Domain杞?棰???
? ?? ???plot.setRangeGridlinePaint(Color.white);//璁劇疆缃??兼í绾塊???
? ?? ???plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));//璁劇疆?茬嚎?句?xy杞寸??璺?绂?
? ?? ???plot.setDomainCrosshairVisible(true);
? ?? ???plot.setRangeCrosshairVisible(true);
? ?? ???XYItemRenderer r = plot.getRenderer();
? ?? ???if (r instanceof XYLineAndShapeRenderer)
? ?? ???{
? ?? ?? ?? ?XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;
? ?? ?? ?? ?renderer.setDefaultShapesVisible(true);
? ?? ?? ?? ?renderer.setDefaultShapesFilled(true);
? ?? ?? ?? ?renderer.setShapesVisible(true);//璁劇疆?茬嚎?????劇ず?版????
? ?? ???}
? ?? ???//璁劇疆Y杞?
? ?? ???NumberAxis numAxis = (NumberAxis) plot.getRangeAxis();
? ?? ???NumberFormat numFormater = NumberFormat.getNumberInstance();
? ?? ???numFormater.setMinimumFractionDigits(2);
? ?? ???numAxis.setNumberFormatOverride(numFormater);
? ?? ???//璁劇疆??绀轟俊??
? ?? ???StandardXYToolTipGenerator tipGenerator = new StandardXYToolTipGenerator(
? ?? ?? ?? ?? ? "???蹭俊??
{1} 16:00,{2})", new SimpleDateFormat("MM-dd"
,
? ?? ?? ?? ?? ? numFormater);
? ?? ???r.setToolTipGenerator(tipGenerator);
? ?? ???//璁劇疆X杞達??ユ??杞達?
? ?? ???DateAxis axis = (DateAxis) plot.getDomainAxis();
? ?? ???axis.setDateFormatOverride(new SimpleDateFormat("MM-dd"
);
? ?? ???ChartRenderingInfo info = new ChartRenderingInfo(
? ?? ?? ?? ?? ? new StandardEntityCollection());
? ?? ???try
? ?? ???{
? ?? ?? ?? ?fileName = ServletUtilities.saveChartAsPNG(chart, 500, 300, info,
? ?? ?? ?? ?? ?? ???session);//?????劇??
//? ?? ?? ? Write the image map to the PrintWriter
? ?? ?? ?? ?ChartUtilities.writeImageMap(pw, fileName, info, false);
? ?? ???}
? ?? ???catch (IOException e)
? ?? ???{
? ?? ?? ?? ?e.printStackTrace();
? ?? ???}
? ?? ???pw.flush();
? ?? ???return fileName;//杩????????劇??????浠跺??
? ? }
? ? /**
? ???* 寤虹???????懼艦???????版????
? ???* @return 杩????版????
? ???*/
? ? private XYDataset createDateSet()
? ? {
? ?? ???TimeSeriesCollection dataset = new TimeSeriesCollection();//?堕?存?茬嚎?版??????
? ?? ???TimeSeries s1 = new TimeSeries("???叉?茬嚎", Day.class);//??寤烘?堕?存?版??婧?锛?姣?涓?涓?//TimeSeries?ㄥ?句???涓??℃?茬嚎
? ?? ???//s1.add(new Day(day,month,year),value),娣誨???版???逛俊??
? ?? ???s1.add(new Day(1, 2, 2006), 123.51);
? ?? ???s1.add(new Day(2, 2, 2006), 122.1);
? ?? ???s1.add(new Day(3, 2, 2006), 120.86);
? ?? ???s1.add(new Day(4, 2, 2006), 122.50);
? ?? ???s1.add(new Day(5, 2, 2006), 123.12);
? ?? ???s1.add(new Day(6, 2, 2006), 123.9);
? ?? ???s1.add(new Day(7, 2, 2006), 124.47);
? ?? ???s1.add(new Day(8, 2, 2006), 124.08);
? ?? ???s1.add(new Day(9, 2, 2006), 123.55);
? ?? ???s1.add(new Day(10, 2, 2006), 122.53);
? ?? ???dataset.addSeries(s1);
? ?? ???dataset.setDomainIsPointsInTime(true);
? ?? ???return dataset;
? ? }
}
??sp??浠朵腑?劇ず?劇??
棣?????eb搴??ㄧ?搴??ㄧ講??浠?eb.xml涓?娣誨??浠ヤ?浠g??:
<!-- ?劇???劇ず锛?浣跨?ㄤ??ㄧ??servlet?ヨ?琛??劇ず锛?瀹?浼?瀹???璺?寰?????绱㈠????灏? -->
<servlet>
? ???<servlet-name>DisplayChart</servlet-name>
? ???<servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class>
</servlet>
<servlet-mapping>
? ? <servlet-name>DisplayChart</servlet-name>
<url-pattern>/servlet/DisplayChart</url-pattern>
</servlet-mapping>
?跺????sp涓??劇ず?劇??
瀹??寸??jsp??浠訛?
<!--??浠跺??绉幫?timeLine.jsp-->
<%@ page contentType="text/html;charset=gb2312" pageEncoding="GB2312"%>
<%@ page import="com.hong.bean.LineXYChart"%>
<%@ page import = "java.io.PrintWriter" %>
<%
LineXYChart xyChart=new LineXYChart();
String fileName=xyChart.getLineXYChart(session,new PrintWriter(out));
??String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + fileName;
%>
<html>
</head>
<title> JFreeChart浣跨?ㄤ?瀛?</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= fileName %>">
</body>