【JSP中使用Jfreechart绘制折线、饼图和柱状图】

<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="org.jfree.data.general.DefaultPieDataset"%>
<%@ page import="org.jfree.data.category.CategoryDataset" %>
<%@ page import="org.jfree.data.category.DefaultCategoryDataset" %>
<%@ page import="org.jfree.chart.JFreeChart"%>
<%@ page import="org.jfree.chart.plot.PiePlot"%>
<%@ page import="org.jfree.chart.ChartRenderingInfo"%>
<%@ page import="org.jfree.chart.servlet.ServletUtilities"%>
<%@ page import="org.jfree.chart.urls.StandardPieURLGenerator"%>
<%@ page import="org.jfree.chart.entity.StandardEntityCollection"%>
<%@ page import="org.jfree.chart.encoders.SunPNGEncoderAdapter"%>
<%@ page import="org.jfree.chart.StandardChartTheme"%>
<%@ page import="org.jfree.chart.ChartFactory"%>
<%@ page import="org.jfree.chart.plot.CategoryPlot"%>
<%@ page import="org.jfree.chart.plot.PlotOrientation"%>
<%@ page import="org.jfree.chart.axis.CategoryAxis"%>
<%@ page import="org.jfree.chart.renderer.category.BarRenderer"%>
<%@ page import="org.jfree.chart.labels.StandardCategoryItemLabelGenerator"%>
<%@ page import="java.awt.Font"%>
<%@ page import="java.awt.Color"%>


<%
//实现饼状图
DefaultPieDataset data = new DefaultPieDataset();
data.setValue("六月", 500);
data.setValue("七月", 580);
data.setValue("八月", 828); 

PiePlot plot = new PiePlot(data);
JFreeChart chart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, true);


chart.setBackgroundPaint(java.awt.Color.white);  //可选,设置图片背景色
chart.setTitle("Welcome to Jfreechart !"); //可选,设置图片标题

ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());

//500是图片长度,300是图片高度
String filename = ServletUtilities.saveChartAsPNG(chart, 800, 500, info, session);
String graphURL = request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;  
%>
<%
//显示柱状图
DefaultCategoryDataset mDataset = new DefaultCategoryDataset();
mDataset.addValue(2000, "清华大学", "本科生");
mDataset.addValue(1500, "清华大学", "研究生");
mDataset.addValue(1000, "清华大学", "博士生");
mDataset.addValue(900, "清华大学", "讲师");
mDataset.addValue(800, "清华大学", "副教授");
mDataset.addValue(300, "清华大学", "教授");
mDataset.addValue(600, "清华大学", "行政人员");
mDataset.addValue(400, "清华大学", "管理人员");

//创建主题样式
StandardChartTheme mChartTheme = new StandardChartTheme("CN");
//设置图表标题
mChartTheme.setExtraLargeFont(new Font("黑体", Font.BOLD, 20));
//设置轴向字体
mChartTheme.setLargeFont(new Font("宋体", Font.PLAIN, 15));
//设置图例字体
mChartTheme.setRegularFont(new Font("宋体", Font.PLAIN, 15));
//应用主题
ChartFactory.setChartTheme(mChartTheme);

JFreeChart mChart = ChartFactory.createBarChart3D(
"学校人员分布图", 
"类型", 
"数量",
mDataset, 
PlotOrientation.VERTICAL, 
true, 
true,true);
//设置内部属性
CategoryPlot mPlot = (CategoryPlot)mChart.getPlot();
CategoryAxis mDomainAxis = mPlot.getDomainAxis();
//设置柱状图距离x轴最左端(即y轴)的距离百分比10%
//mDomainAxis.setLowerMargin(0.1);
mDomainAxis.setUpperMargin(0.1);
//柱体显示数值
BarRenderer mRenderer = new BarRenderer();
mRenderer.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
mRenderer.setItemLabelFont(new Font("宋体", Font.PLAIN, 15));
mRenderer.setItemLabelsVisible(true);
mPlot.setRenderer(mRenderer);

//500是图片长度,300是图片高度
String filenamebar = ServletUtilities.saveChartAsPNG(mChart, 800, 500, info, session);
String graphURLbar = request.getContextPath() + "/servlet/DisplayChart?filename=" + filenamebar;  
 %>
 
 <%
  //实现折现图
  DefaultCategoryDataset mDatasetline = new DefaultCategoryDataset();
mDatasetline.addValue(1, "First", "2013");
mDatasetline.addValue(3, "First", "2014");
mDatasetline.addValue(2, "First", "2015");
mDatasetline.addValue(6, "First", "2016");
mDatasetline.addValue(5, "First", "2017");
mDatasetline.addValue(12, "First", "2018");
mDatasetline.addValue(14, "Second", "2013");
mDatasetline.addValue(13, "Second", "2014");
mDatasetline.addValue(12, "Second", "2015");
mDatasetline.addValue(9, "Second", "2016");
mDatasetline.addValue(5, "Second", "2017");
mDatasetline.addValue(7, "Second", "2018");

StandardChartTheme mChartThemeline = new StandardChartTheme("CN");
mChartThemeline.setLargeFont(new Font("黑体", Font.BOLD, 20));
mChartThemeline.setExtraLargeFont(new Font("宋体", Font.PLAIN, 15));
mChartThemeline.setRegularFont(new Font("宋体", Font.PLAIN, 15));
ChartFactory.setChartTheme(mChartThemeline);

JFreeChart mChartline = ChartFactory.createLineChart(
"折线图",
"年份",
"数量",
mDatasetline,
PlotOrientation.VERTICAL,
true, 
true, 
false);

CategoryPlot mPlotline = (CategoryPlot)mChart.getPlot();
mPlotline.setBackgroundPaint(Color.LIGHT_GRAY);
mPlotline.setRangeGridlinePaint(Color.BLUE);//背景底部横虚线
mPlotline.setOutlinePaint(Color.RED);//边界线

//500是图片长度,300是图片高度
String filenameline = ServletUtilities.saveChartAsPNG(mChartline, 800, 500, info, session);
String graphURLline = request.getContextPath() + "/servlet/DisplayChart?filename=" + filenameline; 
  %>


<HTML>
<HEAD>
      <TITLE>Welcome to Jfreechart !</TITLE>
</HEAD>
<BODY>
<P ALIGN="CENTER">
<img src="<%= graphURLbar %>" width=500 height=300 border=0 usemap="#<%= filenamebar %>">
<img src="<%= graphURL %>" width=500 height=300 border=0 usemap="#<%= filename %>">
<img src="<%= graphURLline %>" width=500 height=300 border=0 usemap="#<%= filenameline %>">
</P>
</BODY>
</HTML>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值