jfreechart 画多个个y轴的曲线图

折腾好久了,想通过jfreechart生成多y轴的曲线图,不同y轴的单位都不同,下面是一个基于多传感器的温湿度检测系统,并利用jfreechart控件绘制温湿度曲线,实时显示温湿度值。我想实现如下图的功能,请教高手有没人研究过

[img]http://dl.iteye.com/upload/attachment/190334/1c2df7dd-8d92-3563-9f2a-c5bb4a3f2324.jpg[/img]

[color=blue][b]思路是:在JfreeChart自带的手册中说的:
1、新建1个常规的Chart
2、新建1个坐标轴,添加到Chart的Plot中
3、向该坐标轴添加dataset,及自定义的设置。

给你个我写的例子吧:[/b][/color]
[code="java"]
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);
}

}
[/code]

前段时间有人问相关的问题,拆线图,你搜索下,应该是你想要的。