天天看點

JFreeChart(四.折線圖.2)

package com.ygl.chart.line;


 import java.awt.Font;

 import javax.servlet.http.HttpSession;

 import org.jfree.chart.ChartFactory;

 import org.jfree.chart.JFreeChart;

 import org.jfree.chart.axis.DateAxis;

 import org.jfree.chart.axis.DateTickUnit;

 import org.jfree.chart.labels.ItemLabelAnchor;

 import org.jfree.chart.labels.ItemLabelPosition;

 import org.jfree.chart.labels.StandardXYItemLabelGenerator;

 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.Month;

 import org.jfree.data.time.TimeSeries;

 import org.jfree.data.time.TimeSeriesCollection;

 import org.jfree.ui.TextAnchor;



 public class LineChart1 {

     public static String getLineChart(HttpSession session)throws Exception{

//按月統計

TimeSeries timeSeriesA=new TimeSeries("A網站通路量統計",Month.class);

timeSeriesA.add(new Month(1,2015),100);

timeSeriesA.add(new Month(2,2015),200);

timeSeriesA.add(new Month(3,2015),800);

timeSeriesA.add(new Month(4,2015),500);

timeSeriesA.add(new Month(5,2015),400);

timeSeriesA.add(new Month(6,2015),1200);

timeSeriesA.add(new Month(7,2015),1700);

timeSeriesA.add(new Month(8,2015),500);

timeSeriesA.add(new Month(9,2015),600);

timeSeriesA.add(new Month(10,2015),300);

timeSeriesA.add(new Month(11,2015),800);

timeSeriesA.add(new Month(12,2015),700);


//按月統計

TimeSeries timeSeriesB=new TimeSeries("B網站通路量統計",Month.class);

timeSeriesB.add(new Month(1,2015),180);

timeSeriesB.add(new Month(2,2015),300);

timeSeriesB.add(new Month(3,2015),400);

timeSeriesB.add(new Month(4,2015),700);

timeSeriesB.add(new Month(5,2015),200);

timeSeriesB.add(new Month(6,2015),1000);

timeSeriesB.add(new Month(7,2015),1500);

timeSeriesB.add(new Month(8,2015),200);

timeSeriesB.add(new Month(9,2015),100);

timeSeriesB.add(new Month(10,2015),350);

timeSeriesB.add(new Month(11,2015),880);

timeSeriesB.add(new Month(12,2015),400);



// 定義時間序列的集合

TimeSeriesCollection lineDataset=new TimeSeriesCollection();

lineDataset.addSeries(timeSeriesA);

lineDataset.addSeries(timeSeriesB);

JFreeChart chart=ChartFactory.createTimeSeriesChart("通路量統計時間折線圖","月份","通路量",lineDataset,true,true,true);


//設定主标題

chart.setTitle(new TextTitle("A,B網站通路量統計對比圖", new Font("隸書", Font.ITALIC, 15))); 

//設定子标題

TextTitle subtitle = new TextTitle("2013年度", new Font("黑體", Font.BOLD, 12));

chart.addSubtitle(subtitle); 

chart.setAntiAlias(true); 


//設定時間軸的範圍。

XYPlot plot = (XYPlot) chart.getPlot(); 

DateAxis dateaxis = (DateAxis)plot.getDomainAxis();

dateaxis.setDateFormatOverride(new java.text.SimpleDateFormat("M月"));

dateaxis.setTickUnit(new DateTickUnit(DateTickUnit.MONTH,1)); //一個月為間隔


//設定曲線是否顯示資料節點

XYLineAndShapeRenderer xylinerenderer = (XYLineAndShapeRenderer)plot.getRenderer();

xylinerenderer.setBaseShapesVisible(true); 


//設定曲線顯示各資料點的值

XYItemRenderer xyitem = plot.getRenderer(); 

xyitem.setBaseItemLabelsVisible(true);

xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_CENTER)); 

xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());

xyitem.setBaseItemLabelFont(new Font("Dialog", 1, 12)); 

plot.setRenderer(xyitem);

String filename=ServletUtilities.saveChartAsPNG(chart, 700, 500, session);

return filename;

     }

     
}
//******************************************************************************