符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
首先要有jfreechart.jar和jcommon-1.0.12.jar两个包然后在web.xml配置
创新互联建站服务项目包括淳安网站建设、淳安网站制作、淳安网页制作以及淳安网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,淳安网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到淳安省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
servlet
servlet-nameDisplayChart/servlet-name
servlet-classorg.jfree.chart.servlet.DisplayChart/servlet-class
/servlet
servlet-mapping
servlet-nameDisplayChart/servlet-name
url-pattern/DisplayChart/url-pattern
/servlet-mapping
最后是jsp代码:
%@ page contentType="text/html;charset=GBK"%
%@ page import="org.jfree.chart.ChartFactory,
org.jfree.chart.JFreeChart,
org.jfree.chart.plot.PlotOrientation,
org.jfree.chart.servlet.ServletUtilities,
org.jfree.data.category.CategoryDataset,
org.jfree.data.general.DatasetUtilities"%
%
double[][] data = new double[][] {{1310}, {720}, {1130}, {440}};
String[] rowKeys = {"猪肉", "牛肉","鸡肉", "鱼肉"};
String[] columnKeys = {""};
CategoryDataset dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys, data);
JFreeChart chart = ChartFactory.createBarChart3D("广州肉类销量统计图", "肉类",
"销量",
dataset,
PlotOrientation.VERTICAL,
true,
false,
false);
String filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, null, session);
String graphURL = request.getContextPath() + "/DisplayChart?filename=" + filename;
%
img src="%= graphURL %"width=500 height=300 border=0 usemap="#%= filename %"
用jfreechart
jfreechart绘制柱状图
import java.io.File;
import java.io.IOException;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
/*
* 绘制柱状图
*你亮哥
* */
public class BarChart3DDemo
{
public static void main(String[] args)
{
try
{
//设置主题
ChartFactory.setChartTheme(Theme.getTheme());
//构造数据
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(100, "JAVA","1");
dataset.addValue(200, "js","1");
dataset.addValue(200, "C++", "2");
dataset.addValue(300, "C", "3");
dataset.addValue(400, "HTML", "4");
dataset.addValue(400, "CSS", "5");
/*
* public static JFreeChart createBarChart3D(
* java.lang.String title, 设置图表的标题
* java.lang.String categoryAxisLabel, 设置分类轴的标示
* java.lang.String valueAxisLabel, 设置值轴的标示
* CategoryDataset dataset, 设置数据
* PlotOrientation orientation, 设置图表的方向
* boolean legend, 设置是否显示图例
* boolean tooltips,设置是否生成热点工具
* boolean urls) 设置是否显示url
*/
JFreeChart chart = ChartFactory.createBarChart3D("编程语言统计", "语言",
"学习人数", dataset, PlotOrientation.VERTICAL, true, false,
false);
//保存图表
ChartUtilities.saveChartAsPNG(new File("E:/chart/BarChart3D.png"), chart, 800, 500);
System.out.println("绘图完成");
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
===================================================================================
//一条线 有点 有数
package Test;
import java.awt.Color;
import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisSpace;
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.title.TextTitle;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.TextAnchor;
public class try123 {
public static void main(String[] args){
//首先构造数据
TimeSeries timeSeries = new TimeSeries("BMI", Month.class);
// 时间曲线数据集合
TimeSeriesCollection lineDataset = new TimeSeriesCollection();
// 构造数据集合
timeSeries.add(new Month(1, 2009), 45);
timeSeries.add(new Month(2, 2009), 46);
timeSeries.add(new Month(3, 2009), 1);
timeSeries.add(new Month(4, 2009), 500);
timeSeries.add(new Month(5, 2009), 43);
timeSeries.add(new Month(6, 2009), 324);
timeSeries.add(new Month(7, 2009), 632);
timeSeries.add(new Month(8, 2009), 34);
timeSeries.add(new Month(9, 2009), 12);
timeSeries.add(new Month(10, 2009), 543);
timeSeries.add(new Month(11, 2009), 32);
timeSeries.add(new Month(12, 2009), 225);
lineDataset.addSeries(timeSeries);
JFreeChart chart = ChartFactory.createTimeSeriesChart("", "date", "bmi", lineDataset, true, true, true);
//增加标题
chart.setTitle(new TextTitle("XXXBMI指数", new Font("隶书", Font.ITALIC, 15)));
chart.setAntiAlias(true);
XYPlot plot = (XYPlot) chart.getPlot();
plot.setAxisOffset(new RectangleInsets(10,10,10,10));//图片区与坐标轴的距离
plot.setOutlinePaint(Color.PINK);
plot.setInsets(new RectangleInsets(15,15,15,15));//坐标轴与最外延的距离
// plot.setOrientation(PlotOrientation.HORIZONTAL);//图形的方向,包括坐标轴。
AxisSpace as = new AxisSpace();
as.setLeft(25);
as.setRight(25);
plot.setFixedRangeAxisSpace(as);
chart.setPadding(new RectangleInsets(5,5,5,5));
chart.setNotify(true);
// 设置曲线是否显示数据点
XYLineAndShapeRenderer xylineandshaperenderer = (XYLineAndShapeRenderer)plot.getRenderer();
xylineandshaperenderer.setBaseShapesVisible(true);
// 设置曲线显示各数据点的值
XYItemRenderer xyitem = plot.getRenderer();
xyitem.setBaseItemLabelsVisible(true);
xyitem.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_LEFT));
xyitem.setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
xyitem.setBaseItemLabelFont(new Font("Dialog", 1, 14));
plot.setRenderer(xyitem);
//显示
ChartFrame frame = new ChartFrame("try1", chart);
frame.pack();
frame.setVisible(true);
}
}
使用在jsp中用jasperReport、iReport和jfreechart做一个带有柱状图的简单报表
1.
首先请看这个帖子,上面有一个文档《JasperReport与Ireport的配置与使用》。
作者写了一份很详细地用jasperReport和iReport生成一个简单报表的文档,详细、清楚,如果你是新手,请一定要看。只要试着一步步地做,做出一个不带柱状图、饼状图的报表相当容易。特别要注意它上面的传递参数$P{},因为我们在用到它。
但是它上面有一个小小的错误,是在用JSP生成报表的那一段代码。请将第一行的那句:去掉。不然总是提示下载一个JSP文件,而不是我们希望生成的报表PDF。
如果你不需要那些柱图饼图之类,就不需要往下看了。那份文档已经很详细了。
(在这里要特别感谢作者,这份文档给了我莫大的帮助。我也是我想写这份总结的原因之一)
2.
下载
1
jasperReport
2
iReport
0.3.0
或0.3.1
建议使用0.3.0,因为0.3.1有一些小BUG。如不生成.jasper文档(其实生成的是一个没有后缀名的文档,chartTool也有一些问题。
3
jfreechart
除了jar文件,它们的API文档也很有用。特别是jasperReport自带的DEMO。
@
生成柱状图
我们假设你已经按《JasperReport与Ireport的配置与使用》的做法生成了一个可以正确运行的报表,那么我们就可以继续了。如果你没有,请再仔细看它,然后再往下看。
我知道的生成柱状图有三种方法,我比较喜欢第三种,但是前两种也应该了解一下。
1
使用ChartTool。
iReport的工具栏上有一个工具,叫ChartTool。我们点一下它,然后在报表上画一个报表出来,这时就可以看到一个柱状的报表了。然后用执行一下,看是不是已经生成了柱状图了?只可惜这个图我们没有办法改参数,满足不了我们的需要。(也许有办法,但我不会,继续)
2
使用ChartScriptlet
去jasperReport自带的DEMO中,找一个chart的例子,它使用的就是jfreechart。可以看看它。它的原理是:
在报表上插入一个图片,赋给它一个变量chartImage。该报表调用了一个类ChartScriptlet,它可以动态生成一个柱状图的图片对象,赋给chartImage。这样报表看起来,就会有一个可以按需要设置的柱图了。
这样做:在报表上插入一个图片,再设置一个变量chartImage,为java.awt.Image类型。在图片的Image
Expresion处设置$V{chartImage}。打开View-Report
Properties-Scriptlet。选择Use
this
scriptlet
class,设置为ChartScriptlet。然后我们把jasperReport中自带的Demo中的chart下的ChartScriptlet.class拷到你报表所在的目录下。运行一下看看,是否有一个饼图?
我们再到jasperReport的DEMO下的chart目录下,看一下ChartScriptlet.java文件。你可以修改它,可以生成自己所需要的柱图、饼图、带图,其它图等等。如果要从数据库中读取数据,可以在这个文件中读取。
3
自已写一个类,生成一个柱图对象,把它作为一个参数传递给报表,再生成一个PDF
第二种方法那个Scriptlet类,继承自另一个类,你只需要重载其中的一个方法afterReportInit()就行了,其它的都不用管。如果是自己的类,你可以把那个Scriptlet中的那些代码拷过来,但是要有一个方法返回一个Image对象,它就是你所生成好的图片对象。你也可以向它传递参数,这样对数据库的操作就可以在别的地方做了。然后把它个Image对象作为参数传递给报表,就行了.
JFreeChart是JAVA平台上的一个开放的图表绘制类库。它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计。JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(time series)、甘特图(Gantt charts)等等多种图表,并且可以产生PNG和JPEG格式的输出,还可以与PDF和EXCEL关联。
JFreeChart的主页地址为:
在这里可以找到最新版本的JFreeChart的相关信息,如说明文档、下载连接以及示例图表等。
JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求。
IBM文档:
Javaeye社区: