`
xiaolongfeixiang
  • 浏览: 236403 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

JFreeChart生成多Y轴的实例

阅读更多

今天在“问答”看到有人问这个问题,自己参考了JfreeChart的参考手册,写了个例子。记录一下:

 

大概思路是:

 

1、先生成一个常规的Chart


2、然后新建一个坐标轴,添加到Chart的Plot中。并对该坐标轴进行颜色、字体等的相应设置


3、向该坐标轴添加dataset

 

看代码:

package edu.xjtu;

import java.awt.Color;
import java.awt.Font;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.HorizontalAlignment;
import org.jfree.ui.RectangleEdge;

public class MultiAxises {

	XYSeriesCollection dataset1;
	XYSeriesCollection dataset2;
	XYSeriesCollection dataset3;
	JFreeChart chart;
	XYPlot plot;
	
	public MultiAxises() {
		// 生成数据
		XYSeries series1 = new XYSeries("系列1");
		series1.add(1, 2);
		series1.add(2, 4);
		series1.add(7, 6);

		XYSeries series2 = new XYSeries("系列2");
		series2.add(5, 2);
		series2.add(3, 4);
		series2.add(7, 3);

		XYSeries series3 = new XYSeries("系列3");
		series3.add(3, 2);
		series3.add(5, 4);
		series3.add(4, 6);

		dataset1 = new XYSeriesCollection();
		dataset2 = new XYSeriesCollection();
		dataset3 = new XYSeriesCollection();
		
		dataset1.addSeries(series1);
		dataset2.addSeries(series2);
		dataset3.addSeries(series3);

		chart = ChartFactory.createXYLineChart("MultiAxis", "X axis",
				"First Y Axis", dataset1, PlotOrientation.VERTICAL, true, true,
				false);

		plot = chart.getXYPlot();

		
		// 添加第2个Y轴
		
		NumberAxis axis2 = new NumberAxis("Second Axis");
			// -- 修改第2个Y轴的显示效果
		axis2.setAxisLinePaint(Color.BLUE);
		axis2.setLabelPaint(Color.BLUE);
		axis2.setTickLabelPaint(Color.BLUE);
		
		plot.setRangeAxis(1, axis2);
		plot.setDataset(1, dataset2);
		plot.mapDatasetToRangeAxis(1, 1);
		     // -- 修改第2条曲线显示效果
		XYLineAndShapeRenderer render2 =  new XYLineAndShapeRenderer();	
		render2.setSeriesPaint(0, Color.BLUE);
		plot.setRenderer(1, render2);
		
		
		// 添加第3个Y轴
		NumberAxis axis3 = new NumberAxis("Third Axis");
		
		axis3.setAxisLinePaint(Color.GREEN);
		axis3.setLabelPaint(Color.GREEN);
		axis3.setTickLabelPaint(Color.GREEN);
		
		plot.setRangeAxis(2, axis3);
		plot.setDataset(2, dataset3);
		plot.mapDatasetToRangeAxis(2, 2);
		
		XYLineAndShapeRenderer render3 =  new XYLineAndShapeRenderer();	
		render3.setSeriesPaint(0, Color.GREEN);
		plot.setRenderer(2, render3);
		
		
		TextTitle copyright = new TextTitle(" 小龙飞翔@Java Eye    ");
		copyright.setPosition(RectangleEdge.BOTTOM);
		copyright.setHorizontalAlignment(HorizontalAlignment.RIGHT);
		copyright.setFont(new Font("黑体", 12, 12));
		chart.addSubtitle(copyright);
		chart.getLegend().setItemFont(new Font("黑体", 12, 12));
	}

	public static void main(String[] agrs) {
		MultiAxises obj = new MultiAxises();
		ChartFrame frame = new ChartFrame("多坐标轴", obj.chart);
		frame.pack();
		frame.setVisible(true);
	}

}

 看效果:


  • 描述: 多Y轴实例图
  • 大小: 46.6 KB
0
0
分享到:
评论
1 楼 终点阿虎 2010-03-04  
请问下Y轴上的刻度是怎么控制的?
比如说:
First Y Axis 这上面的是0.5 刻度增长,
我现在想 1 刻度增长,如何实现?

相关推荐

    JfreeChart画双Y轴折线图

    在创建双Y轴折线图时,我们将主要使用`XYPlot`类,它可以支持多个轴。 创建双Y轴折线图的步骤大致如下: 1. **准备数据**:你需要创建一个`XYDataset`实例,其中每个系列都可以关联到一个特定的Y轴。可以使用`...

    JFreeChart双Y轴折线图实例,可以直接运行

    JFreeChart双Y轴折线图实例,可以直接运行,实例类为LineChartDemo1.JAVA,有注释。 若想在web工程使用只需如下。 String filename = ServletUtilities.saveChartAsPNG(jfreechart, 600, 400, null, session); ...

    JFreeChart生成图片并显示

    "Y轴标签", // Y轴标签 dataset // 数据集 ); ``` 生成图表后,我们可以将其保存为图片文件,或者直接在Web应用中显示。在Web环境中,通常会将图表转换为JPEG或PNG格式的图像流,然后返回给客户端。以下是一个...

    JFreeChart 让X轴的标题竖着显示

    3. 创建`ChartFactory`:通过`createXYLineChart()`或其他方法生成`JFreeChart`实例。 然后,我们要调整X轴的标签布局。JFreeChart提供了`CategoryAxis`类,它允许我们定制X轴的行为。为了使X轴标题竖直显示,我们...

    jfreechart时序图 连接数据库实例

    本实例将探讨如何利用JFreeChart生成时序图,并结合数据库数据来展示动态变化的过程。 **JFreeChart简介** JFreeChart是一个开放源码的Java类库,它提供了一组丰富的API,使得开发者能够轻松地在Java应用中生成高...

    JFreeChart画折线实例

    "Y轴标签", // Y轴标签 dataset, // 数据集 PlotOrientation.VERTICAL, // 布局方向(垂直) true, // 是否显示图例 true, // 是否生成工具提示 false // 是否生成URL链接 ); ``` 有了`JFreeChart`对象后,...

    在 JavaFx 中使用 JFreeChart 生成图表

    以上就是在JavaFX中使用JFreeChart生成图表的基本流程。为了使图表更具交互性,还可以添加事件监听器,如点击图表元素时触发特定操作。此外,JFreeChart提供了丰富的配置选项,可以调整图表的外观,如颜色、线条样式...

    Java JFreeChart 后台生成折线图

    "值", // Y轴标签 dataset // 数据集 ); ``` 3. **自定义Chart**:JFreeChart允许你自定义图表的各个方面,如颜色、字体、图例等。例如,你可以设置背景色: ```java chart.setBackgroundPaint(Color.white); ``...

    jfreechart_生成折线图,饼图,柱状图,堆栈柱状图

    2. 创建图表:使用JFreeChart类的createXYLineChart方法,传入图表标题、X轴标题、Y轴标题和数据源。 3. 设置图表组件:可以设置背景色、图例位置、网格线等。 4. 创建绘图:使用ChartPanel类包装图表,将其添加到...

    jfreechart实例 java生成分布图

    "销售额", // y轴标签 dataset); // 数据集 ``` 4. **设置图表组件**: 可以自定义图表的颜色、样式等,例如: ```java chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18)); ``` 5. **绘制图表**...

    JFreechart图表设计教程与实例

    ### JFreechart图表设计教程与实例 #### 24.1 JFreeChart简介 ##### 24.1.1 认识JFreeChart组件 JFreeChart是一款在Java平台下非常流行的开源图表绘制库,它提供了强大且灵活的功能来帮助开发者创建各种类型的...

    java中关于JFreeChart实现实时曲线图

    3. **生成图表(Chart)**:通过`ChartFactory`类的静态方法创建图表,这里使用的是时间序列图(TimeSeriesChart),并指定图表标题、X轴和Y轴的名称等属性。 4. **配置图表的绘制区域(Plot)**:设置`XYPlot`的...

    JFreeChart所有图表的实例代码

    "值", // Y轴标签 dataset); // 数据集 ``` 2. **Dataset**: 包含图表数据的数据结构。JFreeChart 支持多种数据集,如 `CategoryDataset`(用于分类图表)、`PieDataset`(用于饼图)和 `TimeSeriesCollection`...

    JfreeChart单条曲线实例

    - **线程更新数据**:`RealTimeChart`类实现的`run`方法在一个无限循环中,每300毫秒添加一个新的数据点到`timeSeries`中,使用`randomNum`方法生成随机数作为Y轴值。这使得图表能够实时更新,显示最新的数据变化。 ...

    JFreechart图表设计教程与实例.doc

    4. **坐标轴对象**:Axis类用于表示图表的X轴和Y轴,它们负责数据的刻度和标签。JFreeChart支持多种类型的坐标轴,包括CategoryAxis、NumberAxis和DateTimeAxis等,可以根据数据类型选择合适的轴类型。 5. **图片...

    java使用JFreeChart制作柱形图

    这个方法需要四个参数:图表标题、X轴标签、Y轴标签以及之前创建的 `CategoryDataset`。 3. **定制图表**: 创建了基本的图表后,你可以根据需求进行定制,如改变颜色、调整标签、添加图例等。例如,你可以使用 `...

    JFreeChart画图实例

    这些方法允许你传递图表的标题、数据集、X轴标签、Y轴标签等参数,以定制图表的外观和内容。 对于饼图,数据通常是以`DefaultPieDataset`的形式提供,它将每个值与一个键关联,形成一个个“切片”。在柱状图和折线...

    使用 jfreechart 生成 曲线、柱状图、饼状图、分布图 展示到JSP

    "Y轴标签", // Y轴标签 dataset); // 数据集 ``` 3. **设置图表属性**:根据需求调整图表的颜色、字体、背景等,以满足视觉效果。 4. **生成图像流**:将创建好的图表转换为图像流,以便于在网页上显示: ``...

    jfreechart实例代码

    然后,我们调用`ChartFactory.createBarChart()`方法生成柱状图,指定图表标题、X轴和Y轴标签以及数据源。最后,我们使用`ChartFrame`来显示图表。 除了柱状图,JFreeChart还支持其他类型的图表,如线图、饼图等。...

Global site tag (gtag.js) - Google Analytics