`

jfreechart

    博客分类:
  • Web
阅读更多

http://dev.firnow.com/course/3_program/java/javajs/20090327/163636.html

写道
package com.ijo.footballdelta;

import junit.framework.TestCase;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.annotations.XYBoxAnnotation;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Random;

//JFreeChart LineXY Chart(折线图)
public class CreateJFreeChartXYLineTest extends TestCase {
/**
* 创建JFreeChart LineXY Chart(折线图)
*/
public void jFreeChar() {
//步骤1:创建XYDataset对象(准备数据)
XYDataset dataset = createXYDataset();
//步骤2:根据Dataset 生成 JFreeChart对象,以及做相应的设置
JFreeChart freeChart = createChart(dataset);
//步骤3:将JFreeChart对象输出到文件,Servlet输出流等
saveAsFile(freeChart, "/Users/17ijotechnologies/Desktop/1.png", 800, 600);
}

// 保存为文件
public static void saveAsFile(JFreeChart chart, String outputPath,
int weight, int height) {
FileOutputStream out = null;
try {
File outFile = new File(outputPath);
if (!outFile.getParentFile().exists()) {
outFile.getParentFile().mkdirs();
}
out = new FileOutputStream(outputPath);
// 保存为PNG
ChartUtilities.writeChartAsPNG(out, chart, 300, 200);
out.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
// do nothing
}
}
}
}

// 根据XYDataset创建JFreeChart对象
public static JFreeChart createChart(XYDataset dataset) {
// 创建JFreeChart对象:ChartFactory.createXYLineChart
JFreeChart jfreechart = ChartFactory.createXYLineChart("XYLine Chart Demo", // 标题
"X", // categoryAxisLabel (category 轴,横轴,X轴标签)
"Y", // valueAxisLabel(value 轴,纵轴,Y轴的标签)
dataset, // dataset
PlotOrientation.VERTICAL, true, // legend
false, // tooltips
false); // URLs

// 使用CategoryPlot设置各种参数。以下设置可以省略。
XYPlot plot = jfreechart.getXYPlot();
// LineAndShapeRenderer renderer = (LineAndShapeRenderer)plot.getRenderer();
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) plot.getRenderer();
//设置第一条线有数据点
renderer.setSeriesLinesVisible(0, false);
renderer.setSeriesLinesVisible(1, true);
renderer.setSeriesLinesVisible(2, true);
renderer.setSeriesShapesVisible(0, true);
renderer.setSeriesShapesVisible(1, true);
renderer.setSeriesShapesVisible(2, true);
//renderer.setDrawOutlines(true);
//可以重新设置数据点颜色默认为白色方形
renderer.setUseFillPaint(true);
// renderer.isSeriesVisible()
//数据点填充颜色
renderer.setFillPaint(Color.yellow);
//设置数据点为圆形(x为上下偏离,y为左右偏离,w为圆形左右距离,h为圆形上下距离)
renderer.setSeriesShape(0, new Ellipse2D.Double(-1.0, -1.0, 5.0, 5.0));
// renderer.setSeriesShape(0, ShapeUtilities.createUpTriangle(3.0f));

// 背景色 透明度
plot.setBackgroundAlpha(0.5f);
// 前景色 透明度
plot.setForegroundAlpha(0.5f);
// 其它设置可以参考XYPlot类
// AbstractRenderer
XYBoxAnnotation box = new XYBoxAnnotation(0, 0, 2002, 60);
plot.addAnnotation(box);
plot.setRangeGridlinesVisible(false);
plot.setDomainGridlinesVisible(false);
ValueAxis rangeAxis = plot.getRangeAxis();
rangeAxis.setAxisLineStroke(new BasicStroke(1.6f)); // 设置轴线粗细

rangeAxis.setAxisLinePaint(Color.BLACK); // 设置轴线颜色

rangeAxis.setUpperBound(50); // 设置坐标最大值

rangeAxis.setTickMarkStroke(new BasicStroke(1.6f)); // 设置坐标标记大小

rangeAxis.setTickMarkPaint(Color.BLACK); // 设置坐标标记颜色

rangeAxis.setLabelFont(new Font("黑体", Font.BOLD, 16)); // 设置坐标轴标题字体

rangeAxis.setLabelPaint(Color.BLACK); // 设置坐标轴标题颜色

rangeAxis.setLabelAngle(Math.PI / 2); // 设置坐标轴标题旋转角度


return jfreechart;
}

/**
* 创建XYDataset对象
*/
private static XYDataset createXYDataset() {
XYSeries xyseries1 = new XYSeries("One");
xyseries1.add(1980, 50);
xyseries1.add(1981, 49);
xyseries1.add(1982, 48);
xyseries1.add(1983, 47);
xyseries1.add(1984, 46);
xyseries1.add(1985, 45);
xyseries1.add(1986, 44);
xyseries1.add(1987, 43);
xyseries1.add(1988, 42);
xyseries1.add(1989, 41);
xyseries1.add(1990, 40);
xyseries1.add(1991, 39);
xyseries1.add(1992, 38);
xyseries1.add(1993, 37);
xyseries1.add(1994, 36);
xyseries1.add(1995, 35);
xyseries1.add(1996, 34);
xyseries1.add(1997, 33);
xyseries1.add(1998, 32);
xyseries1.add(2001, 33);
xyseries1.add(2002, 34);
xyseries1.add(2003, 35);
xyseries1.add(2004, 36);


XYSeries xyseries2 = new XYSeries("Three");
xyseries2.add(1987, 40);
xyseries2.add(1997, 30.0008);
xyseries2.add(2007, 38.24);

XYSeries xyseries3 = new XYSeries("Two");
for (int i = 1980; i < 2007; i++) {
Random rand = new Random();
xyseries3.add(i, rand.nextInt(50));
}

XYSeriesCollection xySeriesCollection = new XYSeriesCollection();

xySeriesCollection.addSeries(xyseries1);
xySeriesCollection.addSeries(xyseries2);
xySeriesCollection.addSeries(xyseries3);

return xySeriesCollection;
}

}
 
分享到:
评论

相关推荐

    Jfreechart

    JFreeChart 是一个流行的 Java 库,用于创建各种类型的图表,包括饼图、折线图、柱状图等。在使用 JFreeChart 进行数据可视化时,可能会遇到乱码的问题,这通常与字体设置不当有关。本文将详细分析 Jfreechart 乱码...

    jfreechart所需jar包.zip

    JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的2D图表,包括折线图、柱状图、饼图、散点图等。在Java应用程序中,JFreeChart经常被用于数据分析和可视化,尤其在报表系统、数据分析工具或者任何需要...

    jfreechart的一个小总结

    JFreeChart 是一个开源的 Java 图表库,它允许开发者创建各种复杂的图表,如柱状图、饼图、散点图、线形图等。在本文中,我们将深入探讨 JFreeChart 的核心类和它们在创建图表过程中的作用。 1. **JFreeChart 类**...

    JFreeChart混合图表演示

    JFreeChart是一款强大的Java库,用于创建各种类型的图表,包括柱状图、饼图、线图、散点图等。在“JFreeChart混合图表演示”中,我们重点探讨如何利用JFreeChart来创建一个包含多种图表类型的混合图表,以提供更丰富...

    jfreechart绘制的风速风向玫瑰图

    jfreechart绘制的风速风向玫瑰图 jfreechart是Java中一个流行的图表库,它提供了许多种类的图表,包括柱状图、折线图、饼图、雷达图等。本文主要介绍如何使用jfreechart绘制风速风向玫瑰图。 首先,了解jfreechart...

    jfreeChart pdf文档(原文)

    ### jfreeChart 实际开发运用手册知识点概览 #### 一、引言 **1.1 JFreeChart 是什么?** ##### 1.1.1 概述 JFreeChart 是一个免费的图表库,专为 Java 平台设计。它能够应用于各种 Java 应用程序、Applet、...

    jfreechart的jar包

    **JFreeChart 概述** JFreeChart 是一个开源的 Java 图形库,它为 Java 应用程序提供了丰富的图表功能。这个库被广泛用于创建数据可视化,包括但不限于报表、仪表盘、幻灯片和 Web 应用。JFreeChart 支持多种图表...

    如何在eclipse中配置JFreeChart

    JFreeChart是一款功能强大的Java图表库,它能够生成多种图表,如柱状图、折线图、饼图、时间序列图等,常用于Java应用程序中。而Eclipse是一个开源的集成开发环境,广泛用于Java语言的开发。在Eclipse中配置...

    jfreechart,jfreechart-1.0.13,jfreechart-1.0.13,jfreechart

    《JFreeChart:Java 图形绘制的利器》 在Java编程世界中,高效且美观的图形展示是数据可视化的重要组成部分。JFreeChart作为一款强大的开源图表库,为开发者提供了丰富的图表类型和高度自定义的能力,使得Java应用...

    jfreechart折线图demo

    **JFreeChart 折线图 Demo 知识点详解** JFreeChart 是一个用 Java 编写的开源图表库,它提供了丰富的图表类型,包括折线图、柱状图、饼图等,适用于各种数据可视化需求。在这个“jfreechart折线图demo”中,我们将...

    JfreeChart-雷达图与导出

    **JFreeChart库详解** JFreeChart是一款强大的Java图表库,它允许开发者在Java应用程序或网页中创建多种类型的图表,包括雷达图(也称为蜘蛛网图)。本篇将深入探讨如何利用JFreeChart生成雷达图以及相关的数据导出...

    JFreeChart 官方例子 JFReeChart Dome

    "JFreeChart 官方例子 JFreeChart Dome" 提供了一系列官方示例,帮助开发者更好地理解和运用JFreeChart库的各种功能。 "ChangeLog" 文件通常记录了软件的更新历史,其中包括了每次版本升级中添加的新特性、修复的...

    jfreechart依赖jar包

    JFreeChart 是一个强大的 Java 图形库,它为开发者提供了丰富的图表类型,包括柱状图、折线图、饼状图等,用于在 Java 应用程序中进行数据可视化。在 Java 后台开发中,数据的图形化表示能够帮助用户更直观地理解...

    用JFreeChart写的雷达图实例

    在Java编程环境中,JFreeChart是一个非常流行的库,用于创建各种复杂的图表,包括线图、柱状图、饼图以及我们的焦点——雷达图。本文将深入探讨如何利用JFreeChart库来实现一个雷达图实例,这有助于数据可视化,特别...

    jfreechart+cewolf的架包

    **JFreeChart与Cewolf:构建可视化报表的关键组件** 在Java开发中,生成美观且具有交互性的图表对于数据可视化和报表制作至关重要。JFreeChart和Cewolf是两个强大的开源库,它们共同为开发者提供了丰富的图形生成和...

    JFreeChart用户开发指南1.0.6(中文).pdf

    ### JFreeChart用户开发指南1.0.6(中文)知识点总结 #### 一、引言 **JFreeChart**是一款强大的Java图表绘制库,它为开发者提供了丰富的API来创建各种类型的图表,如饼图、柱状图、折线图等。本指南详细介绍了...

    jfreechart的jar包(全+中文教程)

    JFreeChart是一款强大的Java图表库,它为开发者提供了创建各种静态和动态图表的功能。这个压缩包包含JFreeChart所需的所有核心组件,以及相关的依赖库,如jcommon.jar,确保你可以全面地利用JFreeChart的强大功能。 ...

Global site tag (gtag.js) - Google Analytics