今天在“问答”看到有人问这个问题,自己参考了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
分享到:
相关推荐
JFreeChart双Y轴折线图实例,可以直接运行,实例类为LineChartDemo1.JAVA,有注释。 若想在web工程使用只需如下。 String filename = ServletUtilities.saveChartAsPNG(jfreechart, 600, 400, null, session); ...
NULL 博文链接:https://sunshine-java.iteye.com/blog/325794
JFreechart 双坐标Y轴 折点显示数据 有截图有web的显示效果 和swing的显示效果,仅供参考!如有雷同,纯属盗版!自己刚刚写的,用的两天时间才研究明白
jfreechart生成各种图表 柱状 饼状 折线 锥状
用JFreeChart写的雷达图实例,详细的实现方法。可以看到效果。
jfreechat生成柱状图,饼状图,折线图,导出饼状图到pdf,excel.
jfreechart 生成折线图,饼图,柱状图,堆栈柱状图
JFreeChart生成柱形图完整测试代码 放在普通项目里运行main方法就能生成柱形图 不需要添加任何代码 可根据自己需要修改参数
JFreeChart生成饼图
Jfreechart生成图表的一个例子,能生成柱状图、饼状图、线状图,代码有详细的注释,很适合初学者学习。
JFREECHART柱图
JFreeChart 让X轴的标题竖着显示。 比如x轴的 "苹果 香蕉 橘子"就变成了: 苹 香 橘 果 蕉 子
博文链接:https://clarancepeng.iteye.com/blog/117447
JFreeChart生成报表Demo案例,包含生产饼状图(3D效果),柱状图(3D效果),折现图等(3D效果)。及其所需的Jar包。
flex jfreechart生成 饼状图 flex jfreechart生成 柱状图 flex jfreechart生成 曲线图 flex jfreechart生成 曲线图
JFreeChart chart = ChartFactory.createXYLineChart("liumingjin", // chart title "time(min)", // domain axis label "pv(mv)", // range axis label xyDataset, // data PlotOrientation....
源文件 博文链接:https://lansky07.iteye.com/blog/227571
JSP利用JFreeChart生成折线图,文档中包含所需jar包,共有四个例子,导入即可运行,内附有说明
JFreeChart实例,在struts 2中实现柱状图、柱状图3D、饼状图、饼状图3D、折线图、折线图3D