- 浏览: 46664 次
- 性别:
- 来自: 广州
最新评论
-
周佩煌:
怎么使用啊,表示不会用啊!
marker显示(openlayers+google) -
kuchaguangjie:
用上了,呵呵!
freemarker遍历map -
tang&qiang:
(新手)能给点说明吗???这样看着头晕的很...
从互联网(路径)将图片转化为byte数组
public String getDataSet(
@PathVariable int type,
@RequestParam(value = "stratdate", required = false) Date stratdate,
@RequestParam(value = "enddate", required = false) Date enddate,
HttpSession session, HttpServletRequest request, Model model) {
if (stratdate == null) {
model.addAttribute("info", "请输入开始时间");
return "";
}
if (enddate == null) {
model.addAttribute("info", "请输入结束时间");
return "";
}
if (enddate.before(stratdate)) {
model.addAttribute("info", "开始时间应小于结束时间");
return "";
}
Calendar stratCalendar = Calendar.getInstance();
stratCalendar.setTime(stratdate);
int stratYear = stratCalendar.get(Calendar.YEAR);
int stratMonth = stratCalendar.get(Calendar.MONTH) + 1;
Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(enddate);
int endYear = endCalendar.get(Calendar.YEAR);
int endMonth = endCalendar.get(Calendar.MONTH) + 1;
Library library = libraryService.get(libraryId);
String filename = "";
if (String.valueOf(stratYear).equals(String.valueOf(endYear))) {
if (String.valueOf(stratMonth).equals(String.valueOf(endMonth))) {
int monthIndex = 31;
if (stratMonth == 2) {
if (stratYear % 4 == 0 && stratYear % 100 != 0
|| stratYear % 400 == 0)
monthIndex = 29;
else
monthIndex = 28;
}
if (stratMonth == 1 || stratMonth == 3 || stratMonth == 5
|| stratMonth == 7 || stratMonth == 8
|| stratMonth == 10 || stratMonth == 12) {
monthIndex = 31;
}
if (stratMonth == 4 || stratMonth == 6 || stratMonth == 9
|| stratMonth == 11) {
monthIndex = 30;
}
double[] totals = new double[monthIndex];
for (int day = 0; day < totals.length; day++) {
int total = visitlogService.sumByTime(stratYear,
stratMonth, day, libraryId);
if (total == 0) {
totals[day] = 0.0;
} else {
totals[day] = total;
}
}
if (type == 1) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (int day = 0; day < totals.length; day++) {
dataset.addValue(totals[day], "", new Day(day + 1,
stratMonth, stratYear));
}
}
if (type == 2) {
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
for (int day = 0; day < totals.length; day++) {
defaultpiedataset.setValue(new Day(day + 1, stratMonth,
stratYear), new Double(totals[day]));
}
}
if (type == 3) {
TimeSeries chinaTs = new TimeSeries("日访问量");
chinaTs.clear();
for (int day = 0; day < totals.length; day++) {
chinaTs.add(new TimeSeriesDataItem(new Day(day + 1,
stratMonth, stratYear), new Double(totals[day])));
}
}
} else {
double[] totals = new double[12];
for (int mon = 0; mon < 12; mon++) {
int total = visitlogService.sumByTime(stratYear, mon + 1,
libraryId);
if (total == 0) {
totals[mon] = 0.0;
} else {
totals[mon] = total;
}
}
if (type == 1) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (int mon = 0; mon < 12; mon++) {
dataset.addValue(totals[mon], "", new Month(mon + 1,
stratYear));
}
filename = vImageBarByLibrary("月",
dataset, session);
}
if (type == 2) {
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
for (int mon = 0; mon < 12; mon++) {
defaultpiedataset.setValue(
new Month(mon + 1, stratYear), new Double(
totals[mon]));
}
}
if (type == 3) {
TimeSeries chinaTs = new TimeSeries("月访问量");
chinaTs.clear();
for (int mon = 0; mon < 12; mon++) {
chinaTs.add(new TimeSeriesDataItem(new Month(mon + 1,
stratYear), new Double(totals[mon])));
}
}
}
} else {
double[] totals = new double[endYear - stratYear + 1];
int i = 0;
for (int year = stratYear; year < stratYear + totals.length; year++) {
int total = visitlogService.sumByTime(year, libraryId);
if (total == 0) {
totals[i] = 0.0;
} else {
totals[i] = total;
}
i++;
}
if (type == 1) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
int j = 0;
for (int year = stratYear; year < stratYear + totals.length; year++) {
dataset.addValue(totals[j], "", new Year(year));
j++;
}
}
if (type == 2) {
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
int j = 0;
for (int year = stratYear; year < stratYear + totals.length; year++) {
defaultpiedataset.setValue(new Year(year), new Double(
totals[j]));
j++;
}
}
if (type == 3) {
TimeSeries chinaTs = new TimeSeries("年访问量");
chinaTs.clear();
int j = 0;
for (int year = stratYear; year < stratYear + totals.length; year++) {
chinaTs.add(new TimeSeriesDataItem(new Year(year),
new Double(totals[j])));
j++;
}
}
}
return "/visitlog/showimage";
}
若开始时间和结束时间年不相同时,生成的图表以年为单位; 若相同,月份不相同时,生成的图表以月为单位; 若月份相同,生成的图表以日为单位;
@PathVariable int type,
@RequestParam(value = "stratdate", required = false) Date stratdate,
@RequestParam(value = "enddate", required = false) Date enddate,
HttpSession session, HttpServletRequest request, Model model) {
if (stratdate == null) {
model.addAttribute("info", "请输入开始时间");
return "";
}
if (enddate == null) {
model.addAttribute("info", "请输入结束时间");
return "";
}
if (enddate.before(stratdate)) {
model.addAttribute("info", "开始时间应小于结束时间");
return "";
}
Calendar stratCalendar = Calendar.getInstance();
stratCalendar.setTime(stratdate);
int stratYear = stratCalendar.get(Calendar.YEAR);
int stratMonth = stratCalendar.get(Calendar.MONTH) + 1;
Calendar endCalendar = Calendar.getInstance();
endCalendar.setTime(enddate);
int endYear = endCalendar.get(Calendar.YEAR);
int endMonth = endCalendar.get(Calendar.MONTH) + 1;
Library library = libraryService.get(libraryId);
String filename = "";
if (String.valueOf(stratYear).equals(String.valueOf(endYear))) {
if (String.valueOf(stratMonth).equals(String.valueOf(endMonth))) {
int monthIndex = 31;
if (stratMonth == 2) {
if (stratYear % 4 == 0 && stratYear % 100 != 0
|| stratYear % 400 == 0)
monthIndex = 29;
else
monthIndex = 28;
}
if (stratMonth == 1 || stratMonth == 3 || stratMonth == 5
|| stratMonth == 7 || stratMonth == 8
|| stratMonth == 10 || stratMonth == 12) {
monthIndex = 31;
}
if (stratMonth == 4 || stratMonth == 6 || stratMonth == 9
|| stratMonth == 11) {
monthIndex = 30;
}
double[] totals = new double[monthIndex];
for (int day = 0; day < totals.length; day++) {
int total = visitlogService.sumByTime(stratYear,
stratMonth, day, libraryId);
if (total == 0) {
totals[day] = 0.0;
} else {
totals[day] = total;
}
}
if (type == 1) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (int day = 0; day < totals.length; day++) {
dataset.addValue(totals[day], "", new Day(day + 1,
stratMonth, stratYear));
}
}
if (type == 2) {
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
for (int day = 0; day < totals.length; day++) {
defaultpiedataset.setValue(new Day(day + 1, stratMonth,
stratYear), new Double(totals[day]));
}
}
if (type == 3) {
TimeSeries chinaTs = new TimeSeries("日访问量");
chinaTs.clear();
for (int day = 0; day < totals.length; day++) {
chinaTs.add(new TimeSeriesDataItem(new Day(day + 1,
stratMonth, stratYear), new Double(totals[day])));
}
}
} else {
double[] totals = new double[12];
for (int mon = 0; mon < 12; mon++) {
int total = visitlogService.sumByTime(stratYear, mon + 1,
libraryId);
if (total == 0) {
totals[mon] = 0.0;
} else {
totals[mon] = total;
}
}
if (type == 1) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (int mon = 0; mon < 12; mon++) {
dataset.addValue(totals[mon], "", new Month(mon + 1,
stratYear));
}
filename = vImageBarByLibrary("月",
dataset, session);
}
if (type == 2) {
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
for (int mon = 0; mon < 12; mon++) {
defaultpiedataset.setValue(
new Month(mon + 1, stratYear), new Double(
totals[mon]));
}
}
if (type == 3) {
TimeSeries chinaTs = new TimeSeries("月访问量");
chinaTs.clear();
for (int mon = 0; mon < 12; mon++) {
chinaTs.add(new TimeSeriesDataItem(new Month(mon + 1,
stratYear), new Double(totals[mon])));
}
}
}
} else {
double[] totals = new double[endYear - stratYear + 1];
int i = 0;
for (int year = stratYear; year < stratYear + totals.length; year++) {
int total = visitlogService.sumByTime(year, libraryId);
if (total == 0) {
totals[i] = 0.0;
} else {
totals[i] = total;
}
i++;
}
if (type == 1) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
int j = 0;
for (int year = stratYear; year < stratYear + totals.length; year++) {
dataset.addValue(totals[j], "", new Year(year));
j++;
}
}
if (type == 2) {
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
int j = 0;
for (int year = stratYear; year < stratYear + totals.length; year++) {
defaultpiedataset.setValue(new Year(year), new Double(
totals[j]));
j++;
}
}
if (type == 3) {
TimeSeries chinaTs = new TimeSeries("年访问量");
chinaTs.clear();
int j = 0;
for (int year = stratYear; year < stratYear + totals.length; year++) {
chinaTs.add(new TimeSeriesDataItem(new Year(year),
new Double(totals[j])));
j++;
}
}
}
return "/visitlog/showimage";
}
若开始时间和结束时间年不相同时,生成的图表以年为单位; 若相同,月份不相同时,生成的图表以月为单位; 若月份相同,生成的图表以日为单位;
发表评论
-
OpenLayers部分方法事件
2012-04-06 10:30 9277一、设置中心坐标 map.setCenter(point, z ... -
marker显示(openlayers+google)
2012-04-06 10:15 2341function initMap(type) { var l ... -
openlayers+google
2012-04-06 10:06 11701.先下载openlayers(http://openlaye ... -
查看SISSON
2012-02-08 09:57 627select * from v$locked_object s ... -
ORACLE创建用户及导入、导出
2012-02-08 09:54 1282默认用户: system/manager scott/tige ... -
ORACLE连接|周、DECODE以及树查询
2012-02-08 09:36 1055jdbc:oracle:thin:@(DESCRIPTION= ... -
Unix下SVN部分操作
2011-03-02 14:22 835下载 svn checkout http://ip/项目名/t ... -
JfreeChart使用经验总结
2010-12-20 16:52 926转载于:http://blog.csdn.ne ... -
FusionCharts
2010-12-20 16:48 1028public String vImage(Model mode ... -
JFreeChart改变图片的保存路径
2010-12-20 16:21 1644继承ServletUtilities,若生成的图片格式为jpg ... -
JFreeChart生成图片到服务器指定目录
2010-12-20 16:09 4437//曲线图 public String imageLine(T ... -
从互联网(路径)将图片转化为byte数组
2010-11-25 15:42 2040public byte[] getBytes(String f ... -
从互联网保存图片到本地
2010-11-25 15:33 886public byte[] saveImage(String ... -
java遍历map
2010-11-09 17:17 969Map<String, Map<String, O ... -
freemarker 三种将科学计数法转化为阿拉伯数字格式的方法
2010-10-20 12:40 3131freemarker默认显示是科学计数法 1:加c,如${ma ... -
ibatis 的like查询
2010-09-28 13:21 807name like '%$name$%' 会有注入漏洞 na ... -
freemarker遍历map
2010-09-26 17:36 9034<#if bookMap?exists> ... -
ibatis的批量存储
2010-09-26 17:30 941public void saveItemBatch(final ... -
安装maven
2010-09-26 17:22 2411maven环境变量 JAVA_HOME:D:\Java\jdk ... -
Excel文件操作(jxl)
2010-09-26 16:51 845操作配置 <dependency> <gro ...
相关推荐
通过深入研究"JFreeChart Demo源代码",你可以掌握创建复杂、美观图表的技巧,从而在Java应用程序中实现强大的数据可视化。同时,这些示例也可以作为模板,帮助你快速构建自己的图表组件。对于Java开发人员尤其是...
**JFreeChart 源代码在 SWT 和 JSP 页面中的应用** JFreeChart 是一个流行的 Java 图表库,它提供了一种强大而灵活的方式,在Java应用程序中创建各种类型的图表,如饼图、柱状图和时间序列图。在这个场景中,我们将...
实际应用中,这部分数据可能来源于数据库或其他数据源。 5. **显示图表:** 创建了一个`ChartPanel`对象并将图表添加到其中,然后可以通过`JFrame`将整个图表显示出来。 #### 四、总结 通过以上步骤,我们成功...
JFreeChart的`TimeSeriesCollection`类用于存储时间序列数据,而`XYTimeSeries`则表示单个时间序列。通过`DateAxis`类可以设置时间轴,使得时间数据以日期或时间格式呈现。 此外,JFreeChart还支持其他图表类型,如...
这些工厂方法接受一系列参数,如图表标题、类别轴标签、值轴标签以及数据源。 在 `jfreechart demo` 中,你会发现许多 `.java` 文件,它们展示了如何使用 JFreeChart 创建各种图表。例如,`BarChartDemo.java` 文件...
3. **数据绑定**:能够方便地将数据模型与图表关联,支持多种数据源,如数组、集合、数据库等。 4. **动态更新**:可以实时更新图表数据,适应实时监控和数据分析场景。 5. **导出和打印**:支持将图表导出为 PNG、...
2. **创建数据源**:准备要展示的数据,可以是数组、列表或其他集合类型。 3. **创建图表工厂**:根据需要选择合适的图表类型,调用对应的`createXXXChart()`方法生成图表工厂。 4. **配置图表**:设置图表的标题、...
通过分析源代码,开发者可以快速上手,并了解到如何将JFreeChart集成到自己的项目中。 4. **兼容性与性能**: JFreeChart是基于Java平台的,因此可以运行在任何支持Java的系统上。它的高性能和稳定表现使得即使...
有多种类型的Dataset可供选择,例如CategoryDataset用于分类数据,TimeSeriesCollection用于时间序列数据, PieDataset用于饼图数据。 4. **图表工厂**:ChartFactory类提供了许多静态方法,用于快速生成各种类型的...
根据数据源的类型,选择相应的图表类型构造 JFreeChart: ```java // 示例:创建一个柱状图 CategoryDataset dataset = new DefaultCategoryDataset(); // 添加数据到 dataset JFreeChart chart = ChartFactory....
开发者可以通过这个库调用API来定制图表的颜色、样式、数据源等。 2. **jcommon.jar**:这是一个JFreeChart依赖的基础库,提供了颜色主题、数据模型和图表布局等功能。在使用JFreeChart时,必须同时导入这个库,...
接下来,创建`CategoryPlot`对象,并设置其数据源为之前构建的数据集。之后,可以对图表的样式、标题、轴标签等进行自定义设置,最后将图表嵌入到GUI组件中显示,例如`JFrame`。 #### 图表导出与展示 JFreeChart...
2. **设置数据源**: 数据源是图表的关键,它包含图表上每个系列的数据。你可以创建一个`TimeSeriesCollection`对象,用于存储时间序列数据。每次有新的实时数据时,你可以向这个集合中添加一个`TimeSeries`对象,...
JFreeChart 的核心功能在于它能够方便地将数据转换为可视化图形。其源码中包含了大量的示例,涵盖了各种图表类型及其定制选项,例如: 1. **饼图(Pie Chart)**: 展示部分与整体之间的比例关系,源码中会展示如何...
- **折线图(Line Chart)**:显示数据随时间的变化趋势,适用于时间序列数据。 - **饼图(Pie Chart)**:直观展示各部分占总体的比例。 - **散点图(Scatter Plot)**:用于表示两个变量之间的关系。 - **3D...
JFreeChart支持基于分类数据集和XY数据集的折线图,可以根据需求进行高度定制。 **2.5 XY图** XY图是另一种类型的折线图,特别适用于展示两个变量之间的关系。JFreeChart提供了丰富的功能来创建和定制XY图。 **...
时间序列图表特别适合展示随着时间变化的数据趋势。JFreeChart 提供了专门的时间序列图表组件。 **2.7 直方图** 直方图用于展示数据的分布情况,常用于统计分析。JFreeChart 支持创建标准的直方图,并提供了多种...
CategoryDataset 用于柱状图、线图等,而 TimeSeriesCollection 适用于时间序列数据的图表。 3. **图表创建** 创建图表的基本流程是首先选择合适的 ChartFactory 类,然后调用对应的 create 方法,例如 `...