`
荼罗庄
  • 浏览: 46677 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

按时间为jfreechart数据源

阅读更多
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";
}

若开始时间和结束时间年不相同时,生成的图表以年为单位; 若相同,月份不相同时,生成的图表以月为单位; 若月份相同,生成的图表以日为单位;
分享到:
评论

相关推荐

    JFreeChart Demo源代码

    通过深入研究"JFreeChart Demo源代码",你可以掌握创建复杂、美观图表的技巧,从而在Java应用程序中实现强大的数据可视化。同时,这些示例也可以作为模板,帮助你快速构建自己的图表组件。对于Java开发人员尤其是...

    jfreechart源代码在swt和jsp页面

    **JFreeChart 源代码在 SWT 和 JSP 页面中的应用** JFreeChart 是一个流行的 Java 图表库,它提供了一种强大而灵活的方式,在Java应用程序中创建各种类型的图表,如饼图、柱状图和时间序列图。在这个场景中,我们将...

    jfreechart根据24小时数据画折线图

    实际应用中,这部分数据可能来源于数据库或其他数据源。 5. **显示图表:** 创建了一个`ChartPanel`对象并将图表添加到其中,然后可以通过`JFrame`将整个图表显示出来。 #### 四、总结 通过以上步骤,我们成功...

    Jfreechart各种图的源代码

    JFreeChart的`TimeSeriesCollection`类用于存储时间序列数据,而`XYTimeSeries`则表示单个时间序列。通过`DateAxis`类可以设置时间轴,使得时间数据以日期或时间格式呈现。 此外,JFreeChart还支持其他图表类型,如...

    jfreechart demo

    这些工厂方法接受一系列参数,如图表标题、类别轴标签、值轴标签以及数据源。 在 `jfreechart demo` 中,你会发现许多 `.java` 文件,它们展示了如何使用 JFreeChart 创建各种图表。例如,`BarChartDemo.java` 文件...

    jfreechart

    3. **数据绑定**:能够方便地将数据模型与图表关联,支持多种数据源,如数组、集合、数据库等。 4. **动态更新**:可以实时更新图表数据,适应实时监控和数据分析场景。 5. **导出和打印**:支持将图表导出为 PNG、...

    JFreeChart

    2. **创建数据源**:准备要展示的数据,可以是数组、列表或其他集合类型。 3. **创建图表工厂**:根据需要选择合适的图表类型,调用对应的`createXXXChart()`方法生成图表工厂。 4. **配置图表**:设置图表的标题、...

    jfreechart,jfreechart-1.0.13,jfreechart-1.0.13,jfreechart

    通过分析源代码,开发者可以快速上手,并了解到如何将JFreeChart集成到自己的项目中。 4. **兼容性与性能**: JFreeChart是基于Java平台的,因此可以运行在任何支持Java的系统上。它的高性能和稳定表现使得即使...

    JFreeChart 官方例子 JFReeChart Dome

    有多种类型的Dataset可供选择,例如CategoryDataset用于分类数据,TimeSeriesCollection用于时间序列数据, PieDataset用于饼图数据。 4. **图表工厂**:ChartFactory类提供了许多静态方法,用于快速生成各种类型的...

    jfreechart教程

    根据数据源的类型,选择相应的图表类型构造 JFreeChart: ```java // 示例:创建一个柱状图 CategoryDataset dataset = new DefaultCategoryDataset(); // 添加数据到 dataset JFreeChart chart = ChartFactory....

    jfreechart所需jar包.zip

    开发者可以通过这个库调用API来定制图表的颜色、样式、数据源等。 2. **jcommon.jar**:这是一个JFreeChart依赖的基础库,提供了颜色主题、数据模型和图表布局等功能。在使用JFreeChart时,必须同时导入这个库,...

    jfreechart1.0.6_pdf

    接下来,创建`CategoryPlot`对象,并设置其数据源为之前构建的数据集。之后,可以对图表的样式、标题、轴标签等进行自定义设置,最后将图表嵌入到GUI组件中显示,例如`JFrame`。 #### 图表导出与展示 JFreeChart...

    JFreeChart实时折线图

    2. **设置数据源**: 数据源是图表的关键,它包含图表上每个系列的数据。你可以创建一个`TimeSeriesCollection`对象,用于存储时间序列数据。每次有新的实时数据时,你可以向这个集合中添加一个`TimeSeries`对象,...

    Jfreechart demo 源码

    JFreeChart 的核心功能在于它能够方便地将数据转换为可视化图形。其源码中包含了大量的示例,涵盖了各种图表类型及其定制选项,例如: 1. **饼图(Pie Chart)**: 展示部分与整体之间的比例关系,源码中会展示如何...

    JfreeChart 1.0.10 demo 源代码

    - **折线图(Line Chart)**:显示数据随时间的变化趋势,适用于时间序列数据。 - **饼图(Pie Chart)**:直观展示各部分占总体的比例。 - **散点图(Scatter Plot)**:用于表示两个变量之间的关系。 - **3D...

    JFreeChart 1.0.9 开发文档

    JFreeChart支持基于分类数据集和XY数据集的折线图,可以根据需求进行高度定制。 **2.5 XY图** XY图是另一种类型的折线图,特别适用于展示两个变量之间的关系。JFreeChart提供了丰富的功能来创建和定制XY图。 **...

    jfreechart中文学习文档

    时间序列图表特别适合展示随着时间变化的数据趋势。JFreeChart 提供了专门的时间序列图表组件。 **2.7 直方图** 直方图用于展示数据的分布情况,常用于统计分析。JFreeChart 支持创建标准的直方图,并提供了多种...

    JFreeChart developer guide 配套的源代码

    CategoryDataset 用于柱状图、线图等,而 TimeSeriesCollection 适用于时间序列数据的图表。 3. **图表创建** 创建图表的基本流程是首先选择合适的 ChartFactory 类,然后调用对应的 create 方法,例如 `...

Global site tag (gtag.js) - Google Analytics