今天在“问答”看到有人问这个问题,自己参考了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
分享到:
相关推荐
在创建双Y轴折线图时,我们将主要使用`XYPlot`类,它可以支持多个轴。 创建双Y轴折线图的步骤大致如下: 1. **准备数据**:你需要创建一个`XYDataset`实例,其中每个系列都可以关联到一个特定的Y轴。可以使用`...
JFreeChart双Y轴折线图实例,可以直接运行,实例类为LineChartDemo1.JAVA,有注释。 若想在web工程使用只需如下。 String filename = ServletUtilities.saveChartAsPNG(jfreechart, 600, 400, null, session); ...
"Y轴标签", // Y轴标签 dataset // 数据集 ); ``` 生成图表后,我们可以将其保存为图片文件,或者直接在Web应用中显示。在Web环境中,通常会将图表转换为JPEG或PNG格式的图像流,然后返回给客户端。以下是一个...
3. 创建`ChartFactory`:通过`createXYLineChart()`或其他方法生成`JFreeChart`实例。 然后,我们要调整X轴的标签布局。JFreeChart提供了`CategoryAxis`类,它允许我们定制X轴的行为。为了使X轴标题竖直显示,我们...
本实例将探讨如何利用JFreeChart生成时序图,并结合数据库数据来展示动态变化的过程。 **JFreeChart简介** JFreeChart是一个开放源码的Java类库,它提供了一组丰富的API,使得开发者能够轻松地在Java应用中生成高...
"Y轴标签", // Y轴标签 dataset, // 数据集 PlotOrientation.VERTICAL, // 布局方向(垂直) true, // 是否显示图例 true, // 是否生成工具提示 false // 是否生成URL链接 ); ``` 有了`JFreeChart`对象后,...
以上就是在JavaFX中使用JFreeChart生成图表的基本流程。为了使图表更具交互性,还可以添加事件监听器,如点击图表元素时触发特定操作。此外,JFreeChart提供了丰富的配置选项,可以调整图表的外观,如颜色、线条样式...
"值", // Y轴标签 dataset // 数据集 ); ``` 3. **自定义Chart**:JFreeChart允许你自定义图表的各个方面,如颜色、字体、图例等。例如,你可以设置背景色: ```java chart.setBackgroundPaint(Color.white); ``...
2. 创建图表:使用JFreeChart类的createXYLineChart方法,传入图表标题、X轴标题、Y轴标题和数据源。 3. 设置图表组件:可以设置背景色、图例位置、网格线等。 4. 创建绘图:使用ChartPanel类包装图表,将其添加到...
"销售额", // y轴标签 dataset); // 数据集 ``` 4. **设置图表组件**: 可以自定义图表的颜色、样式等,例如: ```java chart.getTitle().setFont(new Font("宋体", Font.BOLD, 18)); ``` 5. **绘制图表**...
### JFreechart图表设计教程与实例 #### 24.1 JFreeChart简介 ##### 24.1.1 认识JFreeChart组件 JFreeChart是一款在Java平台下非常流行的开源图表绘制库,它提供了强大且灵活的功能来帮助开发者创建各种类型的...
3. **生成图表(Chart)**:通过`ChartFactory`类的静态方法创建图表,这里使用的是时间序列图(TimeSeriesChart),并指定图表标题、X轴和Y轴的名称等属性。 4. **配置图表的绘制区域(Plot)**:设置`XYPlot`的...
"值", // Y轴标签 dataset); // 数据集 ``` 2. **Dataset**: 包含图表数据的数据结构。JFreeChart 支持多种数据集,如 `CategoryDataset`(用于分类图表)、`PieDataset`(用于饼图)和 `TimeSeriesCollection`...
- **线程更新数据**:`RealTimeChart`类实现的`run`方法在一个无限循环中,每300毫秒添加一个新的数据点到`timeSeries`中,使用`randomNum`方法生成随机数作为Y轴值。这使得图表能够实时更新,显示最新的数据变化。 ...
4. **坐标轴对象**:Axis类用于表示图表的X轴和Y轴,它们负责数据的刻度和标签。JFreeChart支持多种类型的坐标轴,包括CategoryAxis、NumberAxis和DateTimeAxis等,可以根据数据类型选择合适的轴类型。 5. **图片...
这个方法需要四个参数:图表标题、X轴标签、Y轴标签以及之前创建的 `CategoryDataset`。 3. **定制图表**: 创建了基本的图表后,你可以根据需求进行定制,如改变颜色、调整标签、添加图例等。例如,你可以使用 `...
这些方法允许你传递图表的标题、数据集、X轴标签、Y轴标签等参数,以定制图表的外观和内容。 对于饼图,数据通常是以`DefaultPieDataset`的形式提供,它将每个值与一个键关联,形成一个个“切片”。在柱状图和折线...
"Y轴标签", // Y轴标签 dataset); // 数据集 ``` 3. **设置图表属性**:根据需求调整图表的颜色、字体、背景等,以满足视觉效果。 4. **生成图像流**:将创建好的图表转换为图像流,以便于在网页上显示: ``...
然后,我们调用`ChartFactory.createBarChart()`方法生成柱状图,指定图表标题、X轴和Y轴标签以及数据源。最后,我们使用`ChartFrame`来显示图表。 除了柱状图,JFreeChart还支持其他类型的图表,如线图、饼图等。...