/**
* @author 李国庆
* @company leemenz (C) copyright
* @time 2007-4-9 下午02:42:07
* @version 1.0.0.0
* @package leo.demo.chart
* @project jspGraphic
*/
package leo.demo.chart;
import java.awt.Color;
import java.awt.Font;
import java.io.PrintWriter;
import java.text.DecimalFormat;
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.entity.StandardEntityCollection;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.DatasetRenderingOrder;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.chart.renderer.xy.XYStepAreaRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.RectangleInsets;
public class MultipleChart {
private Font titleFont = new Font("黑体",Font.CENTER_BASELINE,18);
private XYDataset stepDataset;
private XYDataset lineDataset;
public MultipleChart() {
super();
}
public void setStepValue(XYDataset stepDataset) {
this.stepDataset = stepDataset;
}
public void setLineDataset(XYDataset lineDataset) {
this.lineDataset = lineDataset;
}
private JFreeChart createChart(XYDataset xydataset)
{
JFreeChart jfreechart = ChartFactory.createXYStepAreaChart("监控设置",
"时刻",
"流量",
xydataset,
PlotOrientation.VERTICAL,
true,
true,
false);
XYPlot xyplot = jfreechart.getXYPlot();
DateAxis dateaxis = new DateAxis("时刻");
//设置图两边空白尺寸
dateaxis.setLowerMargin(0.0D);
dateaxis.setUpperMargin(0.0D);
//X轴日期\时间格式
dateaxis.setDateFormatOverride(new SimpleDateFormat("HH"));
xyplot.setDomainAxis(dateaxis);
//设置轴线偏移
xyplot.setAxisOffset(new RectangleInsets(5D, 5D, 5D, 5D));
//设置顺序
xyplot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
//区域上不标注点
XYStepAreaRenderer xyarearenderer = (XYStepAreaRenderer)xyplot.getRenderer();
xyarearenderer.setPlotShapes(false);
//设置区域颜色、透明度
xyarearenderer.setSeriesPaint(0, new Color(0, 0, 255, 64));
xyarearenderer.setToolTipGenerator(new StandardXYToolTipGenerator("{0}({1}) = {2}",
new SimpleDateFormat("HH:mm"),
new DecimalFormat("#,##0")));
//设置第二曲线
StandardXYItemRenderer standardxyitemrenderer = new StandardXYItemRenderer();
standardxyitemrenderer.setToolTipGenerator(new StandardXYToolTipGenerator("{0}({1}) = {2}",
new SimpleDateFormat("HH:mm"),
new DecimalFormat("#,##0")));
xyplot.setDataset(1, lineDataset);
xyplot.setRenderer(1,standardxyitemrenderer);
return jfreechart;
}
public String generateStepRendererChart(
String title,
HttpSession session,
PrintWriter pw) {
String filename = null;
try {
JFreeChart chart = createChart(stepDataset);
//设置图片的背景色
chart.setBackgroundPaint(new Color(215,215,215));
//设置图片标题的字体和大小
TextTitle _title = new TextTitle(title);
_title.setFont(titleFont);
chart.setTitle(_title);
//把生成的图片放到临时目录
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
//设置图片名称前缀
ServletUtilities.setTempFilePrefix("chart-");
//500是图片长度,300是图片高度
filename = ServletUtilities.saveChartAsPNG(chart, 600, 350, info, session);
ChartUtilities.writeImageMap(pw, filename, info, false);
pw.flush();
System.out.println(System.getProperty("java.io.tmpdir") + filename);
} catch (Exception e) {
System.out.println("Exception - " + e.toString());
e.printStackTrace(System.out);
filename = "public_error_600x350.png";
}
return filename;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
评论2
最新资源