package com.zbht.util;
import java.awt.Color;
import java.awt.Font;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import javax.servlet.http.HttpSession;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.time.Day;
import org.jfree.data.time.Month;
import org.jfree.data.time.Year;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.RectangleInsets;
import org.jfree.ui.TextAnchor;
import com.zbht.db.oracle.TBManager;
public class ColumnChart {
public String getLineXYChart(HttpSession session, PrintWriter pw,Connection conn,String accident_id) throws IOException
{
DefaultCategoryDataset dataset = this.createDateSet(conn,accident_id);
String filename = "";
JFreeChart chart = ChartFactory.createBarChart3D("应急资源统计图",
"应急资源",
"资源数量",
dataset,
PlotOrientation.VERTICAL,
false,
false,
false);
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);
BarRenderer3D renderer=(BarRenderer3D) plot.getRenderer();
//设置不能在柱子上正常显示的那些数值的显示方式,将这些数值显示在柱子外面
ItemLabelPosition itemLabelPositionFallback=new ItemLabelPosition(
ItemLabelAnchor.OUTSIDE12,TextAnchor.BASELINE_CENTER,
TextAnchor.TOP_CENTER,0D);
renderer.setPositiveItemLabelPositionFallback(itemLabelPositionFallback);
renderer.setNegativeItemLabelPositionFallback(itemLabelPositionFallback);
renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelFont(new Font("黑体", Font.PLAIN, 12));
renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer);
ChartRenderingInfo info = new ChartRenderingInfo(
new StandardEntityCollection());
try
{
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info,
session);//生成图片
// Write the image map to the PrintWriter
ChartUtilities.writeImageMap(pw, filename, info, false);
}
catch (IOException e)
{
e.printStackTrace();
}
pw.flush();
return filename;//返回生成图片的文件名
}
private DefaultCategoryDataset createDateSet(Connection conn,String accident_id)
{
System.out.println("dateSet_ACCIDENT_ID:"+accident_id);
//显示折线图数据sql语句
String selectSQL1 = "Select * from V_RESOURCE_EXPERT where ACCIDENT_ID = "+ accident_id ;
String selectSQL2 = "Select * from V_RESOURCE_TEAM where ACCIDENT_ID = "+ accident_id ;
String selectSQL3 = "Select * from V_RESOURCE_STAFF where ACCIDENT_ID = "+ accident_id ;
String selectSQL4 = "Select * from V_ACC_RES_DISPATCH_RESOURCE_EQUIPMENT where ACCIDENT_ID = "+ accident_id ;
String selectSQL5 = "Select * from V_ACC_RES_DISPATCH_RESOURCE_KIT where ACCIDENT_ID = "+ accident_id ;
String selectSQL6 = "Select * from V_ACC_RES_DISPATCH_SHELTER where ACCIDENT_ID = "+ accident_id ;
int exp_int = 0;
int tem_int = 0;
int staff_int = 0;
int equipment_int = 0;
int kit_int = 0;
int shelter_int = 0;
String[] tempArry = new String[]{"应急专家","救援队伍","应急人员","应急资源","资源套件","避险中心"}; ;
HashMap lhmm = new HashMap();
try {
exp_int = TBManager.getRsCount(selectSQL1, conn);
lhmm.put("应急专家", Integer.valueOf(exp_int));
tem_int = TBManager.getRsCount(selectSQL2, conn);
lhmm.put("救援队伍", Integer.valueOf(tem_int));
staff_int = TBManager.getRsCount(selectSQL3, conn);
lhmm.put("应急人员", Integer.valueOf(staff_int));
equipment_int = TBManager.getRsCount(selectSQL4, conn);
lhmm.put("应急资源", Integer.valueOf(equipment_int));
kit_int = TBManager.getRsCount(selectSQL5, conn);
lhmm.put("资源套件", Integer.valueOf(kit_int));
shelter_int = TBManager.getRsCount(selectSQL6, conn);
lhmm.put("避险中心", Integer.valueOf(shelter_int));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for( int i= 0 ; i < tempArry.length ; i++ ){
int tempint= ((Integer)lhmm.get(tempArry[i])).intValue();
dataset.addValue(tempint, "", tempArry[i].toString());
}
return dataset;
}
}
相关推荐
这个库提供了广泛的数据可视化功能,包括折线图、柱状图、饼图、散点图、甘特图以及更多其他类型,使得开发者无需深入了解图形编程细节就能轻松地生成高质量的图表。 **主要特性** 1. **多类型图表**:JFreeChart ...
JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...
JFreeChart barChart = ChartFactory.createBarChart3D("3D柱状图", "X轴", "Y轴", barDataset); // 保存柱状图到指定目录 ChartUtilities.saveChartAsJPEG(new File("/path/to/output/barchart.jpg"), barChart, ...
bar charts (regular and stacked, with an optional 3D effect):柱状图 line and area charts:曲线图 scatter plots and bubble charts time series, high/low/open/close charts and candle st
JFreeChart 是一个流行的开源Java库,用于创建各种图表,如饼图、柱状图、折线图、散点图以及时间序列图等。这个"jfreechart-1.0.1-demo.rar"文件是JFreeChart 1.0.1版本的演示程序,它包含了丰富的示例,帮助开发者...
1. **多类型图表支持**:JFreeChart支持多种图表类型,包括线图、柱状图、饼图、面积图、甘特图、雷达图、3D图表等,满足不同场景下的需求。 2. **自定义性**:用户可以根据需要自定义图表的各个方面,如颜色、字体...
1. 多样性:JFreeChart 支持多种类型的图表,包括折线图、柱状图、饼图、散点图、甘特图、雷达图、热力图等,满足不同场景的需求。 2. 高度定制:通过丰富的 API,开发者可以定制图表的颜色、样式、字体、数据标签、...
- **柱状图(Bar Chart)**:适用于展示分类数据的量,可以是单列或多列,支持3D效果。 - **饼图(Pie Chart)**:用于显示各部分占总体的比例,可自定义切片颜色和标签。 - **线图(Line Chart)**:适合展示...
1. **图表类型多样**:JFreeChart支持多种图表类型,如折线图、柱状图、饼图、散点图、甘特图、雷达图、热力图以及3D图表等,可以满足数据分析和展示的广泛需求。 2. **定制性强**:每个图表的外观和感觉都可以高度...
JFreeChart 是一个广泛使用的开源 Java 图形库,特别适用于生成高质量的图表,包括饼图、柱状图、线图、散点图等多种类型。在Java开发中,JFreeChart 提供了丰富的API和灵活的配置选项,使得开发者能够轻松地在应用...
JFreeChart是一款强大的Java图表库,它提供了丰富的图表类型,如柱状图、饼图、线形图、散点图等,广泛应用于数据分析和可视化项目中。本压缩包“jfreechart-demo”包含了JFreeChart的所有运行实例代码,为开发者...
JFreeChart与Struts结合生成多维3D柱状图的实例 report.jsp -- JSP文件 ReportAction.java -- Action类 JFreeChartUtils.java -- 工具类
**JFreeChart库详解:创建3D曲线图、3D饼图和3D柱状图** JFreeChart是一个强大的Java图形库,它提供了多种图表类型,包括曲线图、饼图和柱状图,且支持2D和3D效果。本篇文章将深入探讨如何使用JFreeChart来创建这些...
JFreeChart不仅支持常见的图表类型,如饼图、柱状图、折线图等,还支持一些高级图表类型,如时间序列图、散点图、甘特图等。此外,该库还包括了图表自定义样式的功能,允许开发者根据需求调整图表的外观。 #### ...
- **3D 图表**:JFreeChart 支持 3D 效果,如 3D 柱状图和饼图,增加视觉吸引力。 - **交互式图表**:通过结合 JavaFX,可以创建响应用户交互的图表,如缩放、平移和鼠标悬停提示。 - **时间序列图表**:适用于...
JFreeChart是一款广泛使用的开源Java库,它能够帮助开发者创建各种高质量的图表,包括柱状图、饼图、线形图、散点图、面积图、甘特图以及更复杂的组合图表等。在Java应用程序、Web应用和报告系统中,JFreeChart经常...
JFreeChart是一个强大的Java图表库,可以生成各种类型的图表,包括但不限于折线图、柱状图、饼图、散点图、甘特图、雷达图以及3D图表等。JFreeChart-1[1].0.9.jar是该库的一个版本,相较于早期版本,它可能包含新的...
这包括线形图、柱状图、饼图、3D图表、甘特图、雷达图、散点图、时间序列图等,使得开发者可以灵活选择最适合他们数据展示的图表样式。 - **高度可定制**:开发者可以通过调整颜色、字体、边框、标签、图例等属性来...
5. 3D图表(ThreeDDemo):介绍了如何生成具有立体效果的3D图表,如3D柱状图和3D饼图。 6. 时间序列图(TimeSeriesDemo):展示了处理时间序列数据的方法,适用于金融、科研等领域。 四、实战指南 1. 创建图表:...
JFreeChart是一款强大的开源Java图表库,适用于Swing和Web应用中,支持生成各种类型的图表如柱状图、饼图、曲线图等。鉴于不同版本间的兼容性问题,本示例特别指定了1.0.6版本。 #### 二、下载与环境配置 1. **...