当前位置:首页 » 操作系统 » jfreechart数据库

jfreechart数据库

发布时间: 2022-06-19 19:33:05

A. 如何使用JFreechart实现将从数据库中查出的相关记录,生成柱状图或饼状图

这个普通的三层结构没有实质区别
就是把要显示在jsp页面内的数据 替换成了JFreechart的api流图

B. jfreechart柱形图如何从mysql数据库中添加到数据集中

图显IP:
只要从数据库中读取数据出来,然后循环记录,把数据填入jfreechart中的数据集就可以啦!
ds = this.getDataSource(request,"ds");
conn = ds.getConnection();
ReportInfoBean infoBean = CommonUtil.getReportInfo(conn, SysConfig.REPORT_TYPE_LIVEDENSITY);

String sqlParam = "";
if(sels == null || sels.equals("")){
sqlParam = infoBean.getControlCamIDs();
}else{
sqlParam = sels;
}

url = SysConfig.WEB_APPNAME_PATH+"reportLiveDensityAction.do?method=toSearchRecord&begintime="+beginTime+"&endtime="+endTime+"&sels="+sels;

projectName = infoBean.getProjectName();
dataOper.setCon(conn);
String sql = "exec Sp_PeopleDensity '"
+userInfo.getUserID()+"'," //用户ID
+"'','"//工程ID
+beginTime+"','"//开始日期
+endTime+"','"//结束日期
+"00:"+infoBean.getXinterval()+":00"+"',"//时间间隔
+infoBean.getMultiple()+","//倍数
+"0"+","//0表示所有出入口,1表示部分出入口(此参数在该存储过程中暂无用)
+infoBean.getAlarmNum()+","//警戒线
+"'"+sqlParam+"'";//镜头号

System.out.println("sql="+sql);

ReportChartFactory factory = new ReportChartFactory();

List list = dataOper.queryToList(sql);
factory.generateLiveDensityMap(list);

JFreeChart jfreechart = factory.createLiveDensityChart(factory.createLiveDensityDataset(list,confBean),infoBean,confBean);
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
ChartUtilities.saveChartAsJPEG(new File(filePath+fileName),jfreechart,width,height,info);//宽1000,高600
useMapStr = ChartUtilities.getImageMap(fileName,info);
useMapStr = factory.replaceImageMap(useMapStr);

C. java中 jfreechart 如何从数据库中读取数据,显示的时候作为一个动态的曲线图展示出来,这个要如何实现

jfreechart有获取后台的数据源属性,你后台将数据查询出来就可以了。关于曲线图的生成jfreechart肯定有自动封装的!调用就可以。

D. 关于JFreeChart的几点问题

1.jfreechart-1.0.11-demo.jar只是实例,里面都是class文件,我当初是全部反编译之后再看这些例子的,例子很多;
2.真正需要添加的jar包是jfreechart-1.0.10.jar和jcommon-1.0.13.jar,抱歉我用的是10的,所以名称与你的11不一样
3.饼图例子
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.ui.RectangleInsets;

public class FirstTest{
public static void main(String[] args){

// 第一步创建数据集
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("类别1", 125.3);
dataset.setValue("类别2", 52.7);
dataset.setValue("类别3", 10.6);
dataset.setValue("类别4", 85.96);
dataset.setValue("类别5", 43.2);

// 第二步创建一个JFreeChart对象
JFreeChart chart1 = ChartFactory.createPieChart(
"第一个饼图",
dataset, true, // 是否有图注
true, // 是否有提示
false // 是否有URLS
);

// 第三步让它显示
ChartFrame frame = new ChartFrame("test", chart1);
frame.setBounds(500, 200, 200, 200);
frame.pack();
frame.setVisible(true);
PiePlot3D plot =new PiePlot3D(dataset);
plot.setDepthFactor(0.10);
plot.setShadowPaint(null);
plot.setInsets(new RectangleInsets(100, 150, 100, 150));
// 设置饼图的起始角度
plot.setStartAngle(45);
plot.setForegroundAlpha(0.8f);
plot.setBackgroundAlpha(0.9f);
JFreeChart chart = new JFreeChart("hffirst", JFreeChart.DEFAULT_TITLE_FONT, plot, true);
chart.setBackgroundPaint(java.awt.Color.white);
ChartFrame frame1 = new ChartFrame("test1", chart);
frame1.setBounds(0, 0, 300, 300);
frame1.pack();
frame1.setVisible(true);

}
}

这个实际上会生成两个饼图,一个是二维的,一个三维的,有注释,可以参考

再说一下,demo包里面的东西真的很多,你可以反编译看源代码

E. 如何根据数据库生成jfreechart图表

jfreechart 才不管你数据从哪来呢,jfreechart 也不提供数据库接口,你只需要按照 jfreechart 的要求提供数据即可。

F. Eclipse中JFreechart怎么随着后台数据库更新而更新

<servlet> <servlet-name>DisplayChart</servlet-name> <servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class> </servlet> <servlet-mapping> <servlet-name>DisplayChart</servlet-name> <url-pattern>/servlet/DisplayChart</url-pattern> </servlet-mapping> web.xml这样配置就行了

G. 如何用jfreechart显示饼状图,数据来自我的数据库当中。求具体代码

/*
*生成3D饼状图
*/
(Stringtitle,
List<TimeSeriesDataBean>list){
FontCtl.setFont();//解决乱码问题
List<String[]>dataList=newArrayList<String[]>();
String[]ss;
for(TimeSeriesDataBeanbean:list){
ss=newString[2];
ss[0]=bean.getNam();
ss[1]=bean.getVal()+"";
dataList.add(ss);
}
DefaultPieDatasetdataset=DataSetBuilder.buildPieChartDataSet(title,
dataList);
JFreeChartchart=ChartFactory.createPieChart3D(title,dataset,true,
true,false);
//chart.addSubtitle(newTextTitle("SUBTITLE测试"));
PiePlotpieplot=(PiePlot)chart.getPlot();
//{0}:({1})%代表显示格式:0=名称1=值比如:名称:19%
=(
"{0}:({1})",NumberFormat.getNumberInstance(),NumberFormat
.getPercentInstance());
pieplot.setLabelGenerator(standarPieIG);
//没有数据的时候显示的内容
pieplot.setNoDataMessage("无数据显示");
pieplot.setLabelGap(0.02D);
PiePlot3Dpieplot3d=(PiePlot3D)chart.getPlot();
//设置开始角度
pieplot3d.setStartAngle(120D);
//设置方向为”顺时针方向“
pieplot3d.setDirection(Rotation.CLOCKWISE);
//设置透明度,0.5F为半透明,1为不透明,0为全透明
pieplot3d.setForegroundAlpha(0.7F);
ChartFrameframe=newChartFrame(title,chart);
frame.pack();
frame.setVisible(true);
returnchart;
}

H. jsp页面 jfreechart调用数据库中的数据并以柱状图的形式显现出来

我把核心代码给你,你一定要看懂这个代码,否则还是写不出的,注释我都标的很详细了。前几行是我的方法,作用的返回所有课程,你知道意思就行,因为不一定要这样写,你采用你的方式遍历一边数据库表项并循环插入到dataset就行,其实很简单的~

<%
CourseDAO = new CourseDAO();//类
ArrayList<Courseinfo> list = (ArrayList<Courseinfo>) .allCourses();//这个方法是返回所有的课程

DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (int i = 0; i < list.size(); i++) { //遍历所有课程,把内容依次添加到dataset里
dataset.addValue(list.get(i).getCoursenum(), "totalnum", list.get(i).getCoursename());
}

JFreeChart freechart = ChartFactory.createBarChart3D("选课信息统计图",
"课程名称", "选课人数", dataset, PlotOrientation.VERTICAL, true,true, true);
freechart.setBackgroundPaint(Color.LIGHT_GRAY);
freechart.getTitle().setPaint(Color.BLUE);
freechart.getLegend().setVisible(true);
Font font = new Font("SimSun", 10, 20);
TextTitle txtTitle = null;
txtTitle = freechart.getTitle();
txtTitle.setFont(font);
CategoryPlot plot = freechart.getCategoryPlot();
CategoryAxis domainAxis = plot.getDomainAxis();
//设置距离图片左端距离
domainAxis.setLowerMargin(0.02);
//设置距离图片右端距离
domainAxis.setUpperMargin(0.02);
domainAxis.setLabelFont(new Font("黑体", Font.PLAIN, 14));
//水平底部标题
domainAxis.setTickLabelFont(new Font("宋体", Font.PLAIN, 14));
//垂直标题
ValueAxis rangeAxis = plot.getRangeAxis();//获取柱状
rangeAxis.setLabelFont(new Font("黑体", Font.PLAIN, 14));
plot.setDomainAxis(domainAxis);

//2

rangeAxis.setUpperMargin(0.08);
//设置最低的一个柱与图片底端的距离
rangeAxis.setLowerMargin(0.24);
plot.setRangeAxis(rangeAxis);

//3
BarRenderer3D bar = new BarRenderer3D();
bar.setBaseOutlinePaint(Color.BLACK);
//设置 Wall 的颜色
bar.setWallPaint(Color.darkGray);

//设置每种代表的柱的颜色
bar.setSeriesPaint(0, new Color(255, 0, 0));
bar.setSeriesPaint(1, new Color(0, 255, 0));
bar.setSeriesPaint(2, Color.BLUE);

//设置每种代表的柱的 Outline 颜色
bar.setSeriesOutlinePaint(0, Color.BLACK);
bar.setSeriesOutlinePaint(1, Color.BLACK);
bar.setSeriesOutlinePaint(2, Color.BLACK);
//设置平行柱的之间距离
bar.setItemMargin(0.02);
//显示每个柱的数值,并修改该数值的字体属性
bar.setItemLabelGenerator(new ());
bar.setDrawBarOutline(true);
bar.setIncludeBaseInRange(true);
bar.setItemLabelFont(new Font("华文新魏", Font.PLAIN, 8));
bar.setItemLabelsVisible(true);
plot.setRenderer(bar);
BarRenderer3D renderer = (BarRenderer3D) plot.getRenderer();
renderer.setWallPaint(Color.PINK);
plot.setForegroundAlpha(1.00f);
//注意:此句很关键,若无此句,那数字的显示会被覆盖,给人数字没有显示出来的问题
renderer.(new ItemLabelPosition(
ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT));
renderer.setItemLabelAnchorOffset(10D);

GradientPaint gradientpaint = new GradientPaint(0.0F, 0.0F,
Color.blue, 0.0F, 0.0F, new Color(0, 0, 64)); //设定特定颜色
GradientPaint gradientpaint1 = new GradientPaint(0.0F, 0.0F,
Color.cyan, 0.0F, 0.0F, new Color(0, 64, 0));

renderer.setSeriesPaint(0, gradientpaint);
renderer.setSeriesPaint(1, gradientpaint1);

//设置柱的 Outline 颜色
renderer.setSeriesOutlinePaint(0, Color.BLACK);
renderer.setSeriesOutlinePaint(1, Color.BLACK);
//设置每个category所包含的平行柱的之间距离
renderer.setItemMargin(0.1);

//显示每个柱的数值,并修改该数值的字体属性
renderer
.setItemLabelGenerator(new ());
String filename = ServletUtilities.saveChartAsPNG(freechart, 600,
400, null, session);
String grapUrl = request.getContextPath()
+ "/DisplayChart?filename=" + filename;
%>

<center>
<img src="<%=grapUrl%>" width="700" height="500" border="0"
usemap="#<%=filename%>">
</center>

I. java如何将数据库中的数据统计后用jfreechart显示出来(要具体代码)

其实挺简单的,注意我写的注释!
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="org.jfree.chart.JFreeChart,org.jfree.chart.ChartUtilities,
org.jfree.chart.ChartFactory,
org.jfree.chart.plot.PlotOrientation,
org.jfree.data.category.DefaultCategoryDataset"%> //上面是需要添加的头文件
<html>
<body>
<%
String dataName[]=new String[]{"0-30岁","30-50岁","50-70岁","70岁以上"};//显示数据系列
int dataValueCount[]={4,5,4,6};//数据系列对应的值
//以上两行可以从数据库里去取值,用循环写入数组
//------创建数据集,并设置值------
DefaultCategoryDataset categoryDataset = newDefaultCategoryDataset();//这个表示柱状图
for(int i=0;i<dataName.length;i++)
categoryDataset.addValue(dataValueCount[i],dataName[i],dataName[i]);//循环写入数据集
String titleString="用户年龄阶段分布统计图";//图的标题
JFreeChart chart = ChartFactory.createBarChart(titleString,"用户年龄阶段","数量",
categoryDataset,PlotOrientation.VERTICAL,true,true,false);//chart就是欲创建的图表
ChartUtilities.writeChartAsJPEG(response.getOutputStream(),chart,500,300);//这行的意思是输出成一个JPEG形式的文件显示
%>
</body>
</html>

其实后面还有很多参数的,比如颜色,柱子的标题等等,太多属性了,这个你查看一下JFREECHART的文档就行了,比如下面这样,很容易吧。
Font labelFont = new Font("SansSerif", Font.TRUETYPE_FONT, 12);
/*
* VALUE_TEXT_ANTIALIAS_OFF表示将文字的抗锯齿关闭,
* 使用的关闭抗锯齿后,字体尽量选择12到14号的宋体字,这样文字最清晰好看
*/
// chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
chart.setTextAntiAlias(false);
chart.setBackgroundPaint(Color.white);
// create plot
CategoryPlot plot = chart.getCategoryPlot();
// 设置横虚线可见
plot.setRangeGridlinesVisible(true);
// 虚线色彩
plot.setRangeGridlinePaint(Color.gray);

// 数据轴精度
NumberAxis vn = (NumberAxis) plot.getRangeAxis();
// vn.setAutoRangeIncludesZero(true);
DecimalFormat df = new DecimalFormat("#0.00");
vn.setNumberFormatOverride(df); // 数据轴数据标签的显示格式
// x轴设置
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setLabelFont(labelFont);// 轴标题
domainAxis.setTickLabelFont(labelFont);// 轴数值

属性比较多,不可能全贴出来,也不必全用,设置一些实用的属性即可。

热点内容
光遇安卓用什么拍视频比较好 发布:2024-11-07 20:23:02 浏览:991
华为云服务器搭建网站 发布:2024-11-07 20:22:39 浏览:251
手机刷安卓卡需要注意什么 发布:2024-11-07 20:21:09 浏览:23
块存储客户端 发布:2024-11-07 20:12:14 浏览:972
scratch打地鼠编程 发布:2024-11-07 20:06:41 浏览:211
微信存储空间里聊天记录删除 发布:2024-11-07 20:05:31 浏览:166
无损压缩格式有哪些 发布:2024-11-07 19:54:40 浏览:932
md解压 发布:2024-11-07 19:54:33 浏览:712
六位数密码有多少 发布:2024-11-07 19:47:40 浏览:773
php漂亮的验证码 发布:2024-11-07 19:35:14 浏览:922