用jsp怎样生成柱状图,饼状图,折线图

作者&投稿:赤睿 (若有异议请与网页底部的电邮联系)
用jsp怎样生成柱状图,饼状图,折线图~

JFreeChart 可以绘制饼状图,折线图,柱状图等. awt/swing里可以使用,JSP里也可以使用
JFreeChart是 Java平台下开源的图表类库,是一个完全基于Java的图表开发技术。支持的图表类型也比较丰富,比如饼图、柱状图、散点图、仪表盘、甘特图等多种图表,还可以生成Web图形报表。JFreeChart可导出PNG和JPEG格式的文件例如下面的柱状图

使用在jsp中用jasperReport、iReport和jfreechart做一个带有柱状图的简单报表 1. 首先请看这个帖子,上面有一个文档《JasperReport与Ireport的配置与使用》。 http://community.csdn.net/Expert/topic/3059/3059167.xml?temp=.8465387 作者写了一份很详细地用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对象作为参数传递给报表,就行了.

jsp生成柱状图,饼状图,折线图可以借助于jfreechart。

1、柱状图的生成源码:

/** 

 * 生产柱状图 

 * @version 1.0 

 * @since 

 */  

@SuppressWarnings("serial")  

public class PillarServlet extends HttpServlet {  

    @Override  

    protected void service(HttpServletRequest request,  

            HttpServletResponse response) throws ServletException, IOException {  

        response.setContentType("text/html");  

        // 使用普通数据集  

        DefaultCategoryDataset chartDate = new DefaultCategoryDataset();  

        // 增加测试数据,第一个参数是访问量,最后一个是时间,中间是显示用不考虑  

        chartDate.addValue(55, "访问量", "2010-01");  

        chartDate.addValue(65, "访问量", "2010-02");  

        chartDate.addValue(59, "访问量", "2010-03");  

        chartDate.addValue(156, "访问量", "2010-04");  

        chartDate.addValue(452, "访问量", "2010-05");  

        chartDate.addValue(359, "访问量", "2010-06");  

        try {  

            // 从数据库中获得数据集  

            DefaultCategoryDataset data = chartDate;  

              

            // 使用ChartFactory创建3D柱状图,不想使用3D,直接使用createBarChart  

            JFreeChart chart = ChartFactory.createBarChart3D(  

                    "网站月访问量统计", // 图表标题  

                    "时间", // 目录轴的显示标签  

                    "访问量", // 数值轴的显示标签  

                    data, // 数据集  

                    PlotOrientation.VERTICAL, // 图表方向,此处为垂直方向  

                    // PlotOrientation.HORIZONTAL, //图表方向,此处为水平方向  

                    true, // 是否显示图例  

                    true, // 是否生成工具  

                    false // 是否生成URL链接  

                    );            

            // 设置整个图片的背景色  

            chart.setBackgroundPaint(Color.PINK);  

            // 设置图片有边框  

            chart.setBorderVisible(true);  

            Font kfont = new Font("宋体", Font.PLAIN, 12);    // 底部  

            Font titleFont = new Font("宋体", Font.BOLD, 25); // 图片标题  

            // 图片标题  

            chart.setTitle(new TextTitle(chart.getTitle().getText(), titleFont));  

            // 底部  

            chart.getLegend().setItemFont(kfont);  

            // 得到坐标设置字体解决乱码  

            CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();  

            categoryplot.setDomainGridlinesVisible(true);  

            categoryplot.setRangeCrosshairVisible(true);  

            categoryplot.setRangeCrosshairPaint(Color.blue);  

            NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();  

            numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());  

            BarRenderer barrenderer = (BarRenderer) categoryplot.getRenderer();  

            barrenderer.setBaseItemLabelFont(new Font("宋体", Font.PLAIN, 12));  

            barrenderer.setSeriesItemLabelFont(1, new Font("宋体", Font.PLAIN, 12));  

            CategoryAxis domainAxis = categoryplot.getDomainAxis();           

            /*------设置X轴坐标上的文字-----------*/  

            domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));  

            /*------设置X轴的标题文字------------*/  

            domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));  

            /*------设置Y轴坐标上的文字-----------*/  

            numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));  

            /*------设置Y轴的标题文字------------*/  

            numberaxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));  

            /*------这句代码解决了底部汉字乱码的问题-----------*/  

            chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));  

            // 生成图片并输出  

            ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1.0f,  

                    chart, 500, 300, null);  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

    }  

}  

2、生成饼状统计图:

/** 

 * 生成饼状统计图 

 * @version 1.0 

 * @since 

 */  

@SuppressWarnings("serial")  

public class CakeServlet extends HttpServlet {  

    protected void service(HttpServletRequest request,  

            HttpServletResponse response) throws ServletException, IOException {  

        response.setContentType("text/html");  

        // 默认数据类型  

        DefaultPieDataset dataType = new DefaultPieDataset();  

        // 数据参数 内容,数量  

        dataType.setValue("IE6", 156);  

        dataType.setValue("IE7", 230);  

        dataType.setValue("IE8", 45);  

        dataType.setValue("火狐", 640);  

        dataType.setValue("谷歌", 245);  

        try {  

            DefaultPieDataset data = dataType;  

            // 生成普通饼状图除掉 3D 即可  

            // 生产3D饼状图  

            PiePlot3D plot = new PiePlot3D(data);  

            JFreeChart chart = new JFreeChart(  

                    "用户使用的浏览器类型",            // 图形标题  

                    JFreeChart.DEFAULT_TITLE_FONT, // 标题字体  

                    plot,                          // 图标标题对象  

                    true                           // 是否显示图例  

            );  

            // 设置整个图片的背景色  

            chart.setBackgroundPaint(Color.PINK);  

            // 设置图片有边框  

            chart.setBorderVisible(true);  

            // 配置字体  

            Font kfont = new Font("宋体", Font.PLAIN, 12);    // 底部  

            Font titleFont = new Font("宋体", Font.BOLD, 25); // 图片标题  

            // 图片标题  

            chart.setTitle(new TextTitle(chart.getTitle().getText(), titleFont));  

            // 底部  

            chart.getLegend().setItemFont(kfont);  

            ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1.0f,  

                    chart, 500, 300, null);  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

    }  

}  

3、柱状分布统计图:

/** 

 * 柱状分布统计图 

 * @version 1.0 

 * @since 

 */  

@SuppressWarnings("serial")  

public class ParagraphsServlet extends HttpServlet {  

    protected void service(HttpServletRequest request,  

            HttpServletResponse response) throws ServletException, IOException {  

        response.setContentType("text/html");  

        DefaultCategoryDataset dataTime = new DefaultCategoryDataset();  

        // 这是一组数据  

        dataTime.addValue(52, "0-6", "2010-1-1");  

        dataTime.addValue(86, "6-12", "2010-1-1");  

        dataTime.addValue(126, "12-18", "2010-1-1");  

        dataTime.addValue(42, "18-24", "2010-1-1");  

        // 这是一组数据  

        dataTime.addValue(452, "0-6", "2010-1-2");  

        dataTime.addValue(96, "6-12", "2010-1-2");  

        dataTime.addValue(254, "12-18", "2010-1-2");  

        dataTime.addValue(126, "18-24", "2010-1-2");  

        // 这是一组数据  

        dataTime.addValue(256, "0-6", "2010-1-3");  

        dataTime.addValue(86, "6-12", "2010-1-3");  

        dataTime.addValue(365, "12-18", "2010-1-3");  

        dataTime.addValue(24, "18-24", "2010-1-3");  

        try {  

            DefaultCategoryDataset data = dataTime;  

            // 使用ChartFactory创建3D柱状图,不想使用3D,直接使用createBarChart  

            JFreeChart chart = ChartFactory.createBarChart3D(  

                    "网站时间段访问量统计",   

                    "时间",   

                    "访问量",   

                    data,  

                    PlotOrientation.VERTICAL,   

                    true,   

                    false,   

                    false  

            );  

            // 设置整个图片的背景色  

            chart.setBackgroundPaint(Color.PINK);  

            // 设置图片有边框  

            chart.setBorderVisible(true);  

            Font kfont = new Font("宋体", Font.PLAIN, 12);    // 底部  

            Font titleFont = new Font("宋体", Font.BOLD, 25); // 图片标题  

            // 图片标题  

            chart.setTitle(new TextTitle(chart.getTitle().getText(), titleFont));  

            // 底部  

            chart.getLegend().setItemFont(kfont);  

            // 得到坐标设置字体解决乱码  

            CategoryPlot categoryplot = (CategoryPlot) chart.getPlot();  

            categoryplot.setDomainGridlinesVisible(true);  

            categoryplot.setRangeCrosshairVisible(true);  

            categoryplot.setRangeCrosshairPaint(Color.blue);  

            NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();  

            numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());  

            BarRenderer barrenderer = (BarRenderer) categoryplot.getRenderer();  

            barrenderer.setBaseItemLabelFont(new Font("宋体", Font.PLAIN, 12));  

            barrenderer.setSeriesItemLabelFont(1, new Font("宋体", Font.PLAIN, 12));  

            CategoryAxis domainAxis = categoryplot.getDomainAxis();           

            /*------设置X轴坐标上的文字-----------*/  

            domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11));  

            /*------设置X轴的标题文字------------*/  

            domainAxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));  

            /*------设置Y轴坐标上的文字-----------*/  

            numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12));  

            /*------设置Y轴的标题文字------------*/  

            numberaxis.setLabelFont(new Font("宋体", Font.PLAIN, 12));  

            /*------这句代码解决了底部汉字乱码的问题-----------*/  

            chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12));    

            ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1.0f,  

                    chart, 500, 300, null);  

        } catch (Exception es) {  

            es.printStackTrace();  

        }  

    }  

}  



我给你一个饼图和一个折线图的例子
class BChart{
public static void main(String[] args){
PieDataset dataset = getDataSet();//设置数据源
JFreeChart chart = ChartFactory.createPieChart3D(
"时延分布统计图", // chart title
dataset,// data
true,// include legend
true,
false
);
PiePlot3D plot=(PiePlot3D)chart.getPlot();
// 图片中显示百分比:默认方式
//plot.setLabelGenerator(new StandardPieSectionLabelGenerator(StandardPieToolTipGenerator.DEFAULT_TOOLTIP_FORMAT));
// 图片中显示百分比:自定义方式,{0} 表示选项, {1} 表示数值, {2} 表示所占比例 ,小数点后两位
plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})", NumberFormat.getNumberInstance(), new DecimalFormat("0.00%")));
// 图例显示百分比:自定义方式, {0} 表示选项, {1} 表示数值, {2} 表示所占比例
plot.setLegendLabelGenerator(new StandardPieSectionLabelGenerator("{0}={1}({2})"));
// 设置背景色为白色
chart.setBackgroundPaint(Color.white);
// 指定图片的透明度(0.0-1.0)
plot.setForegroundAlpha(1.0f);
// 指定显示的饼图上圆形(false)还椭圆形(true)
plot.setCircular(true);
// 设置图标题的字体
Font font = new Font(" 黑体",Font.CENTER_BASELINE,20);
TextTitle title = new TextTitle(" 时延分布统计图");
title.setFont(font);
chart.setTitle(title);
FileOutputStream fos_jpg = null;
try {
fos_jpg=new FileOutputStream("D:\\时延分布统计图.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg,100,chart,640,480,null);
fos_jpg.close();
} catch (Exception e) {
}

}

private static PieDataset getDataSet()//数据源构造
{
DefaultPieDataset dataset = new DefaultPieDataset();

dataset.setValue("login.jsp",50);
dataset.setValue("reg.jsp",60);

return dataset;
}



用jsp怎样生成柱状图,饼状图,折线图
chart.getLegend().setItemFont(new Font("宋体", Font.PLAIN, 12)); \/\/ 生成图片并输出 ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1.0f, chart, 500, 300, null); } catch (Exception e) { e.printStackTrace(); } } } 2、生成饼状统计图: \/** * 生成饼状统计图...

如何在JSP中实现柱形图 [
只要试着一步步地做,做出一个不带柱状图、饼状图的报表相当容易。特别要注意它上面的传递参数$P{},因为我们在用到它。 但是它上面有一个小小的错误,是在用JSP生成报表的那一段代码。请将第一行的那句:<%@ page contentType="application\/pdf;charset=GB2312" %>去掉。不然总是提...

在jsp页面中可以做像圆柱那样的统计数据图
用JFreeChart,可到网上下载JFreeChart包,然后把它添加到java库。如果是用JSP生成的话,要把它添加到tomcat库,另外还要配置一下tomcat。到这上面看怎么配置的,http:\/\/blog.myspace.cn\/e\/400640039.htm。具体例子,生成柱状饼图,网上也有很多例子:import org.jfree.chart.JFreeChart;import org.jfree...

jsp中怎样在一个页面上实现数据的输入而在另一个页面上生成柱状表?
1)在第一个页面,当输入一个数字时,在该输入框的onchange事件里发起AJAX请求,让后台的servlet得到这个数字,该servlet一接到该数字就发出去响应。2)在第二个页面里用Comet方式监听上一步里的那个servlet的响应,同时根据响应用JavaScript动态更新DOM的方式生成柱状表。这里关键就是如何实现Comet,你可以...

fusioncharts 柱状图求助
在新建的放页面文件夹逗jsp地下,创建3D柱状图页面逗column3D.jsp地: 双击打开逗column3D.jsp地,初始化 时页面的jsp代码, 在页面文件夹逗jsp地目录下的逗data地中,新建一个提供3D柱形图数据源的xml文件逗column3D.xml地, 双击打开逗column3D.xml地,数据源文件初始化时代码, 在逗column3D...

jfreechart折线图乱码问题
ValueAxis rangeAxis=plot.getRangeAxis();\/\/获取柱状 rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15));chart.getLegend().setItemFont(new Font("黑体", Font.BOLD, 15));饼图(PiePlot):JFreeChart chart = ChartFactory.createPieChart3D("IT行业职业分布图", dataset, true, false,...

小区物业管理系统论文
系统专门针对决策层的需求提供各种统计数据及分析图表,企业领导可随时随地查看公司最新营运统计资料,主要功能:按管理区、大楼统计出费用收缴情况,收费率统计,收费年、月、日报表;可分别按管理区、大楼统计出租率;所有统计功能均可生成柱状,饼状及曲线图;系统维护管理系统 主要模块:系统初始化设置、...

星球大战
光剑 (Lightsaber)水晶乃剑刃之心灵;心灵乃绝地之水晶;绝地乃原力之水晶;原力乃心灵之剑刃。—— 卢米娜拉.昂都礼 《星球大战动画版:克隆战争》光剑是绝地与西斯的标准武器,其金属剑柄通常长约30厘米,按下启动钮后,即释放出一道约一米长的纯能量的柱状剑刃。剑刃会发出一种独特的嗡嗡声。...

乳房什么意思?
◎ 像乳汁的东西:豆~。~胶。~腐(亦称“腐乳”)。◎ 像乳头的东西:钟~(钟上可敲打的突出物)。钟~石。◎ 生,生殖:孳~。◎ 初生的、幼小的:~燕。~牙。~名(小名)。汉英互译 ◎乳 breast breed milk 参考资料:http:\/\/www.sogou.com\/features\/char.jsp?query=%C8%E9 ...

玉石和翡翠是由什么物质组成的
5. 干青种:绿色浓重且纯正,透明度差,底子干,玉质较粗,矿物颗粒的形态呈短柱状。6. 花青种:绿色呈脉状或斑点状不规则分布,是分布较广的一种翡翠,属于中低档品种。7. 油青种:透明度较好,玉质细腻,表面似油脂光泽,绿色较暗,掺杂蓝灰色调,给人一种很沉闷的感觉,属于中低档品种。8. 马牙种:矿物颗粒呈白色粒...

曲阳县18430653364: 如何在JSP中实现柱形图 [ -
才旦岸香连: 使用在jsp中用jasperReport、iReport和jfreechart做一个带有柱状图的简单报表 1. 首先请看这个帖子,上面有一个文档《JasperReport与Ireport的配置与使用》. http://community.csdn.net/Expert/topic/3059/3059167.xml?temp=.8465387 作者写了...

曲阳县18430653364: 如何利用FusionCharts 来创建3D柱状图 -
才旦岸香连: 1. 在新建的放页面文件夹“jsp”下,创建3D柱状图页面“column3D.jsp”,2. 双击打开“column3D.jsp”,初始化 时页面的jsp代码,3. 在页面文件夹“jsp”目录下的“data”中,新建一个提供3D柱形图数据源的xml文件“column3D.xml”,4. 双击打开“column3D.xml”,数据源文件初始化时代码,5. 在“column3D.jsp”页面代码中,编写3D柱形图代码,新建柱形图以及柱形图的数据源引入,如下图中的代码所示:6. 页面代码编写完成后,接着编写数据源文件“column3D.xml”,注意3D柱形图的数据格式,柱形图的趋势线,如图所示:

曲阳县18430653364: java web中怎么实现柱形图、饼状图等数据图? -
才旦岸香连: 首先你先下一个FusionCharts,这是一个flash插件(自带很多图形).然后按照这个插件需求的xml格式,你可以通过dom4j来生成xml,然后再嵌入flash插件的页面取xml里的值.

曲阳县18430653364: 请问如何在jsp中画图?如饼形图多谢
才旦岸香连: 建议使用javascript或者applet.

曲阳县18430653364: 如何使用html和js,css代码生成柱状图和饼状图 -
才旦岸香连: 建议直接使用JSChart或HighChart、EChart、FusionCharts之类的工具,里面CSS\JS都是组装好的,只需要调整一些参数即可使用.

曲阳县18430653364: jsp中怎样在一个页面上实现数据的输入而在另一个页面上生成柱状表? -
才旦岸香连: 要是一个页面上输入数字,另一个不同页面生成柱状图的话,用一种高级AJAX技术,叫Comet,就可实现,Comet比传统Ajax更优越的地方在于传统Ajax是从页面想服务器请求数据,而Comet是一种服务器向页面推送数据的技术.你可以想象一...

曲阳县18430653364: 如何使用html和js,css代码生成柱状图和饼 -
才旦岸香连: 1、使用CSS(层叠样式表)如何使用样式当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化.有以下三种方式来插入样式表:外部样式表当样式需要被应用到很多页面的时候,外部样式表将是理想的选择.使用外部样式表...

曲阳县18430653364: jsp 画图
才旦岸香连: jFreeChart是一个好用的画图工具.“ http://www.ibm.com/developerworks/cn/java/l-jfreechart/”.看看就知道了.

曲阳县18430653364: 怎们让jsp页面jfreechart调用数据库中的数据并以柱状图的形式显现出来? -
才旦岸香连: 使用strus1+spring+ibatis 具体代码如下:/**查询获得图表需要的横从坐标数据 数据采集 (被调用)*/ private static CategoryDataset createDataset() { DefaultCategoryDataset localDefaultCategoryDataset = new DefaultCategoryDataset(); List<...

曲阳县18430653364: 怎样用JAVA来实现在网页中制作柱状图
才旦岸香连: JFreeChart是JAVA平台上的一个开放的图表绘制类库.它完全使用JAVA语言编写,是为applications, applets, servlets 以及JSP等使用所设计.JFreeChart可生成饼图(pie charts)、柱状图(bar charts)、散点图(scatter plots)、时序图(...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网