jfreechart的问题,急!!!(在线等,顶了就有分)

chjx1982 2008-11-17 09:35:52

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page language="java" contentType="text/html; charset=GBK" %>

<%@ page import = " java.io.FileNotFoundException " %>
<%@ page import = " java.io.FileOutputStream " %>
<%@ page import = " org.apache.commons.logging.Log " %>
<%@ page import = " java.io.IOException " %>

<%@ page import = " org.apache.commons.logging.LogFactory " %>
<%@ page import = " org.jfree.chart.ChartFactory " %>
<%@ page import = " org.jfree.chart.ChartUtilities " %>
<%@ page import = " org.jfree.chart.JFreeChart " %>
<%@ page import = " org.jfree.chart.plot.PlotOrientation " %>
<%@ page import = " org.jfree.data.category.CategoryDataset " %>
<%@ page import = " org.jfree.data.category.DefaultCategoryDataset " %>

<%@ page import = " java.awt.Color " %>
<%@ page import = " org.jfree.chart.renderer.category.BarRenderer3D " %>
<%@ page import = " org.jfree.chart.labels.* " %>
<%@ page import = " org.jfree.chart.axis.CategoryAxis " %>
<%@ page import = " org.jfree.chart.plot.CategoryPlot " %>
<%@ page import = " org.jfree.ui.TextAnchor " %>
<%
dataset.addValue(1,"a","aa");
dataset.addValue(2,"b","bb");
dataset.addValue(3,"c","cc");
JFreeChart chart = ChartFactory.createBarChart3D( "天天快递投票统计图" ,"qqqqq" , "投票数" ,dataset,PlotOrientation.VERTICAL, true , false , false );
chart.setBackgroundPaint(Color.WHITE);

CategoryPlot plot = chart.getCategoryPlot();

CategoryAxis domainAxis = plot.getDomainAxis();
// domainAxis.setVerticalCategoryLabels( false );
plot.setDomainAxis(domainAxis);

BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.BLACK);

//把数字显示在上方
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
renderer.setItemLabelAnchorOffset(10D);
// 设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin( 0.05 );
// 显示每个柱的数值,并修改该数值的字体属性
renderer.setItemLabelGenerator( new StandardCategoryItemLabelGenerator());
renderer.setItemLabelsVisible( true );
plot.setRenderer(renderer);


// 设置柱的透明度
plot.setForegroundAlpha( 0.8f);
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart, 1000 , 400 );
out.clear();
out = pageContext.pushBody();
%>


我连续这个页面,没刷两下,内存就爆了。怎么回事?????
我也没有读数据库呀,这个我是从网上下过来的。
...全文
201 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
chjx1982 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wpabbs 的回复:]
到我博客中去看,有个例子,肯定能运行。如果要改功能,不会了再问我。
[/Quote]
不好意思,我找了几遍,没有找到jfreechart的例子。
wpabbs 2008-11-17
  • 打赏
  • 举报
回复
到我博客中去看,有个例子,肯定能运行。如果要改功能,不会了再问我。
chjx1982 2008-11-17
  • 打赏
  • 举报
回复
或者谁有这方面的例子。给一个,刚才在网上又找了一个,跑不出图出来。
chjx1982 2008-11-17
  • 打赏
  • 举报
回复
不好意思,前面丢了一个东西。这个是完整的。
chjx1982 2008-11-17
  • 打赏
  • 举报
回复

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page language="java" contentType="text/html; charset=GBK" %>

<%@ page import = " java.io.FileNotFoundException " %>
<%@ page import = " java.io.FileOutputStream " %>
<%@ page import = " org.apache.commons.logging.Log " %>
<%@ page import = " java.io.IOException " %>

<%@ page import = " org.apache.commons.logging.LogFactory " %>
<%@ page import = " org.jfree.chart.ChartFactory " %>
<%@ page import = " org.jfree.chart.ChartUtilities " %>
<%@ page import = " org.jfree.chart.JFreeChart " %>
<%@ page import = " org.jfree.chart.plot.PlotOrientation " %>
<%@ page import = " org.jfree.data.category.CategoryDataset " %>
<%@ page import = " org.jfree.data.category.DefaultCategoryDataset " %>

<%@ page import = " java.awt.Color " %>
<%@ page import = " org.jfree.chart.renderer.category.BarRenderer3D " %>
<%@ page import = " org.jfree.chart.labels.* " %>
<%@ page import = " org.jfree.chart.axis.CategoryAxis " %>
<%@ page import = " org.jfree.chart.plot.CategoryPlot " %>
<%@ page import = " org.jfree.ui.TextAnchor " %>
<%


DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(1,"a","aa");
dataset.addValue(2,"b","bb");
dataset.addValue(3,"c","cc");
JFreeChart chart = ChartFactory.createBarChart3D( "投票统计图" ,"qqqqq" , "投票数" ,dataset,PlotOrientation.VERTICAL, true , false , false );
chart.setBackgroundPaint(Color.WHITE);

CategoryPlot plot = chart.getCategoryPlot();

CategoryAxis domainAxis = plot.getDomainAxis();
// domainAxis.setVerticalCategoryLabels( false );
plot.setDomainAxis(domainAxis);

BarRenderer3D renderer = new BarRenderer3D();
renderer.setBaseOutlinePaint(Color.BLACK);

//把数字显示在上方
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setBaseItemLabelsVisible(true);
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
renderer.setItemLabelAnchorOffset(10D);
// 设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin( 0.05 );
// 显示每个柱的数值,并修改该数值的字体属性
renderer.setItemLabelGenerator( new StandardCategoryItemLabelGenerator());
renderer.setItemLabelsVisible( true );
plot.setRenderer(renderer);


// 设置柱的透明度
plot.setForegroundAlpha( 0.8f);
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart, 1000 , 400 );
out.clear();
out = pageContext.pushBody();
%>

chjx1982 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 huaiyusong 的回复:]
bu bao cai guai ne!
[/Quote]
为什么????
huaiyusong 2008-11-17
  • 打赏
  • 举报
回复
bu bao cai guai ne!
zjc_love 2008-11-17
  • 打赏
  • 举报
回复
up
你如果用于投票的话
投票选项显示在哪?
那么长的选项 显示在左边和下边都不好吧
chjx1982 2008-11-17
  • 打赏
  • 举报
回复
谢谢大家的热情。
yanbin1016 2008-11-17
  • 打赏
  • 举报
回复
我最近也在弄这个 都能正常运行 可就是中文数据会乱码 一直没解决 贴出来你参考下,随便建个JPS页把代码拷进去 应该就可以运行了。要是找到解决乱码问题的话 麻烦也和我分享下 嘿嘿~~以下是代码:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.awt.*" %>
<%@ page import="org.jfree.chart.*" %>
<%@ page import="org.jfree.chart.plot.*" %>
<%@ page import="org.jfree.chart.servlet.ServletUtilities" %>
<%@ page import="org.jfree.chart.entity.StandardEntityCollection" %>
<%@ page import="org.jfree.chart.renderer.category.BarRenderer3D" %>
<%@ page import="org.jfree.data.category.DefaultCategoryDataset" %>
<%@ page import="org.jfree.data.general.DefaultPieDataset" %>
<%@ page import="org.jfree.chart.renderer.category.BarRenderer3D" %>
<%@ page import="org.jfree.chart.title.TextTitle" %>
<html>
<head><title>Jfree图表</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<body>
<P><font size="4" face="楷体_GB2312"><strong><font color="#0099ff">招生统计信息</font></strong></font></p>
<%
//设置生成饼状图
request.setCharacterEncoding("utf-8");
int i=0;
String[] area={"1111","啊","常州市","无锡市","苏州市","南通市"};

//try{
/*Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:aaa");
Statement sql=con.createStatement();
ResultSet rs=sql.executeQuery("select * from test");*/

//按地区进行统计
PrintWriter pw=null;
DefaultPieDataset dataset=new DefaultPieDataset();
//设置数据源
int[] dq={88,66,11,10,30,20};
for(int k=0;k<area.length;k++){
System.out.println(area[k]);
dataset.setValue(area[k].toString(),dq[k]);
//System.out.println(dataset.getValue("第"+k+""+area[k].toString()));
}
/*while(rs.next()){
String dq=rs.getString("dq");
dataset.setValue(area[i],Integer.parseInt(dq));

//添加数据,参数包括名称和数值
i++;
}*/
/*rs.close();
sql.close();
con.close();*/

JFreeChart chart=ChartFactory.createPieChart("asssd",dataset,true,true,true);

Font font = new Font("SimSun", 10, 10);
CategoryPlot categoryplot = null;
TextTitle title = null;
//LegendTitle legend = null;
title = chart.getTitle();
//legend = chart.getLegend();
//categoryplot = (CategoryPlot) chart.getPlot();
title.setFont(font);


chart.setTitle("asssd");//设置图片标题
ChartRenderingInfo info=new ChartRenderingInfo(new StandardEntityCollection());
String filename=ServletUtilities.saveChartAsJPEG(chart,300,200,info,session);
//设置生成图片,包括图片的大小,长度是300,宽是200
//out.println(filename);
session.setAttribute("file_name1",filename);
String URL= request.getContextPath() + "/servlet/DisplayChart?filename=" + filename;
out.println(URL);
out.println();
out.println(filename);
session.setAttribute("file_url1",URL);
/*}
catch(SQLException e){
out.println(e);
} */
String ss="发发";
session.setAttribute("ss",ss);
%>

<%


//生成柱状图
//try{
/*int j=0;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con=DriverManager.getConnection("jdbc:odbc:aaa");
Statement sql=con.createStatement();
ResultSet rs=sql.executeQuery("select * from test");*/
DefaultCategoryDataset dataset1=new DefaultCategoryDataset();//设置数据源
/*while(rs.next()){
dataset.addValue(Integer.parseInt(rs.getString("dq")),"学校",area[j]);
//添加数据,参数包括名称和数值
j++;
}*/
for(int j=0;j<area.length;j++){
dataset1.addValue(dq[j],"学校",area[j]);
}
JFreeChart chart1=ChartFactory.createBarChart3D("统计图","招生地区","招生人数",dataset1,PlotOrientation.VERTICAL,false,false,false);
CategoryPlot plot=chart1.getCategoryPlot();
BarRenderer3D renderer1=new BarRenderer3D();
renderer1.setItemLabelsVisible(true);//显示每个柱子上的数据
renderer1.setItemMargin(0.1);//设置每个柱子之间的距离
plot.setRenderer(renderer1);//让上面对柱子的设置生效
String filename3=ServletUtilities.saveChartAsJPEG(chart1,300,200,session);
//生成图片,包括图片的大小
session.setAttribute("file_name2",filename3);
String URL2=request.getContextPath()+"/servlet/DisplayChart?filename="+filename3;
session.setAttribute("file_url2",URL2);

// }catch(SQLException e){}

%><%=session.getAttribute("ss") %>
<center><img src="<%=session.getAttribute("file_url1")%>" width=300 height=200 border=0 usemap="#<%=session.getAttribute("file_name1") %>">

<img src="<%=session.getAttribute("file_url2") %>" width=300 height=200 border=0 usemap="#<%=session.getAttribute("file_name2")%>"></center>

</html>
zou_wei_forever 2008-11-17
  • 打赏
  • 举报
回复
没用过jfreechart,帮顶
goldboy123 2008-11-17
  • 打赏
  • 举报
回复
看不懂,帮你顶一下下
kokobox 2008-11-17
  • 打赏
  • 举报
回复
贴一个以前用过的:

import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.RenderingHints;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.time.TimeSeriesCollection;

/**
* <p> Title:根据数据集生成曲线图,饼图,柱状图,甘特图等</p>
* <p> Description:</p>
* <p> Copyright: Copyright (c) 2005 </p>
* <p> Company:rhui.co.,ltd </p>
* @author zhujw
* @version 1.0
*/
public class JFreeChartUtil {
/**
* 柱状图(一维,二维关系)
* @param title
* @param categoryAxisLabel
* @param valueAxisLabel
* @param dataset
* @return
*/
public static JFreeChart createHistogram(String title,
String categoryAxisLabel, String valueAxisLabel,
CategoryDataset dataset) {
//ChartFactory工厂类
JFreeChart chart = ChartFactory.createBarChart3D(title,
categoryAxisLabel, valueAxisLabel, dataset,
PlotOrientation.VERTICAL, true, false, false);
// PlotOrientation.VERTICAL:让平行柱垂直显示 PlotOrientation.HORIZONTAL 则让平行柱水平显示。

// 字体由模糊变清晰
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
chart.setBackgroundPaint(Color.WHITE);
CategoryPlot plot = chart.getCategoryPlot();

CategoryAxis domainAxis = plot.getDomainAxis();
// domainAxis.setVerticalCategoryLabels(false);
domainAxis.setVisible(true);
plot.setDomainAxis(domainAxis);
// plot图形设计:绘图集plot对象
ValueAxis rangeAxis = plot.getRangeAxis();
// 设置最高的一个 Item 与图片顶端的距离
rangeAxis.setUpperMargin(0.15);
// 设置最低的一个Item 与图片底端的距离
rangeAxis.setLowerMargin(0.15);
// rangeAxis.set
plot.setRangeAxis(rangeAxis);
BarRenderer3D renderer = new BarRenderer3D();
// render 绘制工具
renderer.setBaseOutlinePaint(Color.BLACK);
// 设置 Wall 的颜色
renderer.setWallPaint(Color.gray);
// 设置每种类型代表的柱的颜色

renderer.setSeriesPaint(0, Color.YELLOW);
renderer.setSeriesPaint(1, Color.GREEN);
renderer.setSeriesPaint(2, Color.RED);
renderer.setSeriesPaint(3, Color.CYAN);
renderer.setSeriesPaint(5, Color.ORANGE);
renderer.setSeriesPaint(4, Color.MAGENTA);
renderer.setSeriesPaint(6, Color.DARK_GRAY);
renderer.setSeriesPaint(7, Color.PINK);
renderer.setSeriesPaint(8, Color.black);
renderer.setSeriesPaint(9, new Color(0, 100, 255));
renderer.setSeriesPaint(10, new Color(0, 0, 255));
// 设置每个地区所包含的平行柱的之间距离
renderer.setItemMargin(0.25);// 为25%
// 显示每个柱的数值,并修改该数值的字体属性
renderer
.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer);

// 设置柱的透明度
plot.setForegroundAlpha(0.6f);
// 设置地区、收入的显示位置
plot.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
plot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);



/*----------设置标题字体--------------------------*/
ValueAxis rAxis = plot.getRangeAxis();
TextTitle textTitle = chart.getTitle();
textTitle.setFont(new Font("黑体", Font.PLAIN, 20));
/*------设置X轴坐标上的文字-----------*/
domainAxis.setTickLabelFont(new Font("sans-serif",Font.PLAIN,15));
/*------设置X轴的标题文字------------*/
domainAxis.setLabelFont(new Font("宋体",Font.PLAIN,15));
/*------设置Y轴坐标上的文字-----------*/
rAxis.setTickLabelFont(new Font("sans-serif",Font.PLAIN,15));
/*------设置Y轴的标题文字------------*/
rAxis.setLabelFont(new Font("黑体",Font.PLAIN,15));

/*---------设置柱状体上的显示的字体---------*/
//renderer.setItemLabelGenerator(new LabelGenerator(0.0));
renderer.setItemLabelFont(new Font("宋体",Font.PLAIN,12));
renderer.setItemLabelsVisible(true);






return chart;

}

/**
* 创建饼图
* @param dataset
* @param title
* @return
*/
public static JFreeChart createPieChart(String title,
DefaultPieDataset dataset) {
//ChartFactory工厂类
JFreeChart chart = ChartFactory.createPieChart3D(title, dataset, true,
true, true);
//设定饼图标题
chart.setTitle(new TextTitle(title, new Font("隶书", Font.ITALIC, 15)));
//定制子标题
//chart.addSubtitle(new TextTitle("2005质量技术监督局财务分析", new Font("隶书", Font.ITALIC, 12)));
//设定背景
chart.setBackgroundPaint(Color.white);
//饼图使用一个PiePlot
PiePlot pie = (PiePlot) chart.getPlot();
//设定显示格式(名称加百分比或数值)
//pie.setPercentFormatString("#,###0.0#%");
//设定百分比显示格式
pie.setBackgroundPaint(Color.white);
//pie.setSectionLabelFont(new Font("黑体", Font.TRUETYPE_FONT, 12));
//设定背景透明度(0-1.0之间)
pie.setBackgroundAlpha(0.6f);
//设定前景透明度(0-1.0之间)
pie.setForegroundAlpha(0.90f);

return chart;

}

/**
* 创建曲线图
* @param title
* @param subtitleStr
* @param domain
* @param range
* @param dataset
* @return
*/
public static JFreeChart JFreeChartSeriesChart(String title,
String subtitleStr, String domain, String range,
TimeSeriesCollection dataset) { //时间曲线元素
JFreeChart chart = ChartFactory.createTimeSeriesChart(title, domain,
range, dataset, true, true, false);
TextTitle subtitle = new TextTitle(subtitleStr, new Font("黑体",
Font.BOLD, 12));
chart.addSubtitle(subtitle);
chart.setTitle(new TextTitle(title, new Font("隶书", Font.ITALIC, 15)));
chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000,
Color.blue));
return chart;
}

/**
* 取得session中图像的地址
* @param chart
* @param session
* @param request
* @return
* @throws IOException
*/
public static String getGraphURL(JFreeChart chart, HttpSession session,
HttpServletRequest request, int width, int height)
throws IOException {
String filename = ServletUtilities.saveChartAsPNG(chart, width, height,
null, session);
String graphURL = request.getContextPath()
+ "/servlet/DisplayChart?filename=" + filename;
return graphURL;

}

}

cjmiou 2008-11-17
  • 打赏
  • 举报
回复
小女子 不懂,关注中
帮楼主顶吧

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧