package com.langhua.time;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.ui.RectangleInsets;
/**
* 坐标是时间例子
* @author Administrator
*
*/
public class TimeSeriesTest {
public static void main(String[] args) {
//初始化数据
TimeSeries s1 = new TimeSeries("L&G European Index Trust中文", Month.class);
s1.add(new Month(2, 2001), 181.8);
s1.add(new Month(3, 2001), 167.3);
s1.add(new Month(4, 2001), 153.8);
s1.add(new Month(5, 2001), 167.6);
s1.add(new Month(6, 2001), 158.8);
s1.add(new Month(7, 2001), 148.3);
s1.add(new Month(8, 2001), 153.9);
s1.add(new Month(9, 2001), 142.7);
s1.add(new Month(10, 2001), 123.2);
s1.add(new Month(11, 2001), 131.8);
s1.add(new Month(12, 2001), 139.6);
s1.add(new Month(1, 2002), 142.9);
s1.add(new Month(2, 2002), 138.7);
s1.add(new Month(3, 2002), 137.3);
s1.add(new Month(4, 2002), 143.9);
s1.add(new Month(5, 2002), 139.8);
s1.add(new Month(6, 2002), 137.0);
s1.add(new Month(7, 2002), 132.8);
TimeSeries s2 = new TimeSeries("L&G UK Index Trust中文", Month.class);
s2.add(new Month(2, 2001), 129.6);
s2.add(new Month(3, 2001), 123.2);
s2.add(new Month(4, 2001), 117.2);
s2.add(new Month(5, 2001), 124.1);
s2.add(new Month(6, 2001), 122.6);
s2.add(new Month(7, 2001), 119.2);
s2.add(new Month(8, 2001), 116.5);
s2.add(new Month(9, 2001), 112.7);
s2.add(new Month(10, 2001), 101.5);
s2.add(new Month(11, 2001), 106.1);
s2.add(new Month(12, 2001), 110.3);
s2.add(new Month(1, 2002), 111.7);
s2.add(new Month(2, 2002), 111.0);
s2.add(new Month(3, 2002), 109.6);
s2.add(new Month(4, 2002), 113.2);
s2.add(new Month(5, 2002), 111.6);
s2.add(new Month(6, 2002), 108.8);
s2.add(new Month(7, 2002), 101.6);
TimeSeriesCollection dataset = new TimeSeriesCollection();
dataset.addSeries(s1);
dataset.addSeries(s2);
//创建 相应的对象
JFreeChart chart = ChartFactory.createTimeSeriesChart("日期","Date时间","Price价格",dataset,true, true, false );
//配置字体等格式
TimeSeriesTest.configFont(chart);
//设置背影色,由于这个例是COPY过来的,并没有放到TimeSeriesTest.configFont(chart);这个方法里面
chart.setBackgroundPaint(Color.white);
//获得相当对象
XYPlot plot = (XYPlot) chart.getPlot();
//背影色
plot.setBackgroundPaint(Color.lightGray);
//X轴网格线和Y轴网格线颜色
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);
//以下还不清楚
plot.setAxisOffset(new RectangleInsets(5.0, 5.0, 5.0, 5.0));
plot.setDomainCrosshairVisible(true);
plot.setRangeCrosshairVisible(true);
//以下也不清楚
XYItemRenderer r = plot.getRenderer();
if (r instanceof XYLineAndShapeRenderer) {
XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) r;
renderer.setBaseShapesVisible(true);
renderer.setBaseShapesFilled(true);
}
//设置X坐标上面的格式
DateAxis axis = (DateAxis) plot.getDomainAxis();
axis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy"));
FileOutputStream fos_jpg = null;
try {
fos_jpg = new FileOutputStream("c:\\TimeSeries.jpg");
ChartUtilities.writeChartAsJPEG(fos_jpg,0.99f,chart,800,600, null);
fos_jpg.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 配置字体等信息
* @param chart
*/
private static void configFont(JFreeChart chart) {
// 配置字体
Font xfont = new Font("宋体", Font.CENTER_BASELINE, 12);// X轴
Font yfont = new Font("宋体", Font.CENTER_BASELINE, 20);// Y轴
Font kfont = new Font("宋体", Font.CENTER_BASELINE, 18);// 底部
Font titleFont = new Font("微软雅黑", Font.CENTER_BASELINE, 25); // 图片标题
XYPlot plot = (XYPlot) chart.getPlot();// 图形的绘制结构对象
//数据轴网格线条颜色
plot.setRangeGridlinePaint(Color.BLUE);
//数据轴网格线条笔触
plot.setRangeGridlineStroke(new BasicStroke(1.0f));
// 图片标题
chart.setTitle(new TextTitle(chart.getTitle().getText(),titleFont));
chart.getLegend().setItemFont(kfont);
//X轴
ValueAxis domainAxis = plot.getDomainAxis();
//设置X轴标题字体
domainAxis.setLabelFont(xfont);
//设置X轴字体
domainAxis.setTickLabelFont(xfont);
//设置字体颜色
domainAxis.setTickLabelPaint(Color.BLUE);
//横轴上的label斜显示
//domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);
//domainAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_45);
//分类轴边距,同种类型之间的距离,比如说Row 1之间的
//domainAxis.setCategoryMargin(0.2f);
//分类轴下(左)边距,就是离左边的距离
domainAxis.setLowerMargin(0.1);
//分类轴下(右)边距,就是离最右边的距离
domainAxis.setUpperMargin(0.1);
//Y 轴
ValueAxis rangeAxis = plot.getRangeAxis();
//设置Y轴标题字体
rangeAxis.setLabelFont(yfont);
//设置Y轴字体
rangeAxis.setTickLabelFont(yfont);
// 字体颜色
rangeAxis.setLabelPaint(Color.RED);
}
}
分享到:
相关推荐
在本篇“JFreeChart学习笔记3-简单Line图形创建”中,我们将深入探讨如何使用JFreeChart库在Java环境中创建基本的线性图表。JFreeChart是一个强大的、开源的Java图表库,它允许开发者轻松地生成各种类型的图表,包括...
**JFreeChart学习笔记1 - 简单Pie图创建** 在Java开发中,我们经常需要展示数据,而饼图(Pie Chart)是一种常见的数据可视化工具,尤其适用于展示各项比例关系。JFreeChart是一个强大的开源Java图表库,它提供了...
在本文中,我们将深入探讨如何使用JFreeChart库在Java中创建简单的柱状图,以及如何扩展到3D效果。JFreeChart是一个流行的开源图表库,适用于多种图表类型,包括条形图、线形图、饼图等。通过学习本文,你将能够利用...
JFreeChart 是一个广泛使用的 Java 图形库,它提供了丰富的图表类型,包括饼图、柱状图、线图、散点图等,使得开发者能够在 Java 应用程序中方便地创建高质量的图表。"jfreechart1.0.3-demo-src" 是 JFreeChart ...
压缩包中的例子文件是学习JFreeChart的好资源,它们展示了如何创建和定制各种图表。通过分析源代码,开发者可以快速上手,并了解到如何将JFreeChart集成到自己的项目中。 4. **兼容性与性能**: JFreeChart是基于...
JFreeChart 是一个功能丰富的开源Java类库,专为在Java应用程序和Web应用中创建各种类型的图表而设计。这个库提供了广泛的数据可视化功能,包括折线图、柱状图、饼图、散点图、甘特图以及更多其他类型,使得开发者...
struts2-jfreechart-plugin-2.1.8.1.jar
- **jFreeChartDemo**: 这是 JFreeChart 的演示程序,包含了各种类型的图表示例,这些示例展示了如何创建和定制图表,是学习 JFreeChart 的绝佳起点。 2. **图表创建** - **ChartFactory**: JFreeChart 提供了一...
JFreeChart中文api (JFreeChart-1.0.5-Ch.chm) JFreeChart中文api (JFreeChart-1.0.5-Ch.chm)
4. **绘图引擎**:JFreeChart的核心是`ChartFactory`,它负责根据给定的参数创建各种类型的图表。通过`createXXXChart()`方法,我们可以快速生成不同类型的图表实例。 5. **示例代码**:“20161128JFreeChart-Demo...
jfreechart-0.9.21的jar包和jfreechart-0.9.21-demo
struts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jarstruts2-jfreechart-plugin-2.0.11.jar
jfreechart-1.0.19压缩包中有一个jfreechart-1.0.19-demo.jar,里面演示了各种图表的制作案例,包括BarChart、LineChart、PieChart、TimeSeriesChart、XYSeries等等,共309个例子,现开放源码,请各位下载,欢迎交流...
"jfreechart-1.0.6-demo"源码是JFreeChart的一个示例集合,它展示了如何创建并定制各种类型的图表,是学习和理解JFreeChart功能的最佳起点。通过分析这些示例代码,开发者可以快速掌握JFreeChart的API用法和设计...
JFreeChart是一个流行的Java库,专门用于创建各种类型的图表,如柱状图、线形图、饼图等。本文将深入探讨如何利用JFreeChart进行饼形图的绘制,并结合提供的标签“源码”和“工具”,分享一些实际的编程实践。 首先...
1. **示例代码**:这些代码展示了如何创建和配置各种图表,是学习JFreeChart的最佳起点。通过阅读和运行这些示例,你可以了解如何利用JFreeChart进行数据可视化。 2. **图表演示**:包含各种类型的图表展示,每种...
JFreeChart目前是最好的java图形解决方案,基本能够解决目前的图形方面的需求,主要包括如下几个方面: pie charts (2D and 3D):饼图(平面和立体) bar charts (regular and stacked, with an optional 3D ...
总结来说,`jfreechart-1.0.13-demo.src` 提供的源代码是学习和研究 JFreeChart 的宝贵资源,通过深入学习这些示例,开发者不仅可以掌握图表的基本创建方法,还能了解如何进行高级定制和优化,提升 Java 图表开发...
- **创建 ChartFactory**:根据所需的图表类型,调用相应的静态方法创建图表对象,如 `JFreeChart chart = ChartFactory.createLineChart()`。 - **配置图表**:设置图表的标题、图例、背景色等属性。 - **定义...
JFreeChart 是基于 Java 的图形用户界面 (GUI) 应用程序的图表组件,它可以被嵌入到 Swing 或者 JavaFX 应用中。其设计目标是提供一个简单易用的 API,使得开发者能够方便地创建出复杂且富有表现力的图表。在源码中...