参考自:http://www.360doc.com/content/06/0330/15/7147_88686.shtml
一个使用CategoryDataset画分类柱图及分类折线图的例子:
CategoryChart的代码如下所示:
public class CategoryChart {
public JFreeChart chart;
private String title;
private String categoryAxisLabel;
private String valueAxisLabel;
/**
* 分类关键字,如:"分类1","分类2"
*/
private String[] rowKeys;
/**
* 某种分类类型中的值,如分类1中的"column1","column2"
*/
private String[] columnKeys;
/**
* 每种分类对应的的填充数据
*/
private double[][] datas;
private CategoryDataset dataset;
/**
* 柱图
*/
public void createBarChart3D() {
createCategoryDataset();
chart = ChartFactory.createBarChart3D(title, // 图表标题
categoryAxisLabel, // 目录轴的显示标签
valueAxisLabel, // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(new Color(238, 244, 255));// 设置图表的颜色
chart.setBackgroundPaint(Color.WHITE);
setChartFont("");
ValueAxis rangeAxis = plot.getRangeAxis();
// 设置最高的一个 Item 与图片顶端的距离
rangeAxis.setUpperMargin(0.15);
// 设置最低的一个 Item 与图片底端的距离
rangeAxis.setLowerMargin(0.15);
plot.setRangeAxis(rangeAxis);
BarRenderer3D renderer = new BarRenderer3D();
// 设置分类同一个columnKey的平行柱之间距离为0
renderer.setItemMargin(0);
// 显示每个柱的数值,并修改该数值的字体属性
renderer
.setItemLabelGenerator(new StandardCategoryItemLabelGenerator());
renderer.setItemLabelFont(new Font("楷体", Font.PLAIN, 12));
renderer.setItemLabelsVisible(true);
plot.setRenderer(renderer);
}
/**
* 折线图
*/
public void createLineChart() {
createCategoryDataset();
chart = ChartFactory.createLineChart(title, // 图表标题
categoryAxisLabel, // 目录轴的显示标签
valueAxisLabel, // 数值轴的显示标签
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向:水平、垂直
true, // 是否显示图例(对于简单的柱状图必须是false)
false, // 是否生成工具
false // 是否生成URL链接
);
CategoryPlot plot = chart.getCategoryPlot();
plot.setBackgroundPaint(new Color(238, 244, 255));// 设置图表的颜色
chart.setBackgroundPaint(Color.WHITE);
setChartFont("");
}
/**
* 创建分类数据集
*/
private void createCategoryDataset(){
//当没有数据时,创建一个默认的分类数据集用来画图
if(rowKeys == null || columnKeys == null || datas == null){
dataset = new DefaultCategoryDataset();
}else{
// 创建分类数据集
dataset = DatasetUtilities.createCategoryDataset(rowKeys, columnKeys,
datas);
}
}
/**
* 图标乱码解决
*/
private void setChartFont(String charttype) {
Font title = new Font("楷体", Font.PLAIN, 15);
Font f = new Font("楷体", Font.PLAIN, 12);
// title(标题),
TextTitle textTitle = chart.getTitle();
textTitle.setFont(title);
// 获得图表区域对象
if ("PieChart".equals(charttype)) {
PiePlot plot = (PiePlot) chart.getPlot();
plot.setLabelFont(f);
} else if ("XYChart".equals(charttype)) {
XYPlot plot = (XYPlot) chart.getPlot();
ValueAxis valAxis = plot.getDomainAxis();
// 设置X轴坐标上的文字
valAxis.setTickLabelFont(f);
// 设置X轴的标题文字
valAxis.setLabelFont(f);
ValueAxis numberaxis = plot.getRangeAxis();
// 设置Y轴坐标上的文字
numberaxis.setTickLabelFont(f);
// 设置Y轴的标题文字
numberaxis.setLabelFont(f);
} else {
CategoryPlot plot = chart.getCategoryPlot();
CategoryAxis domainAxis = plot.getDomainAxis();
// 设置X轴坐标上的文字
domainAxis.setTickLabelFont(f);
// 设置X轴的标题文字
domainAxis.setLabelFont(f);
ValueAxis numberaxis = plot.getRangeAxis();
// 设置Y轴坐标上的文字
numberaxis.setTickLabelFont(f);
// 设置Y轴的标题文字
numberaxis.setLabelFont(f);
}
// legend(图释)
chart.getLegend().setItemFont(f);
}
//setter和getter方法
//构造函数
}
测试程序如下所示:
public class CategoryChartTest extends CategoryChart {
private void createCategoryChart(String chartType){
if("LineCategoryChart".equalsIgnoreCase(chartType)){
createLineChart();
}else if("BarCategoryChart".equalsIgnoreCase(chartType)){
createBarChart3D();
}
}
public void createTwoCategoryChart(String chartType){
this.setTitle("全年的风速和风能频率分布图");
this.setCategoryAxisLabel("风速(m/s)");
this.setValueAxisLabel("频率/%");
this.setRowKeys(new String[]{"风速","风能"});
this.setColumnKeys(new String[]{"<0.5","1","2","3","4","5",">5"});
double[][] datas = new double[][]{{22.3,12.2,10.0,3.2,14.0,21.3,5.6},{4.3,36.5,23.5,21.0,6.3,9.8,15.7}};
this.setDatas(datas);
createCategoryChart(chartType);
}
public void createThreeCategoryChart(String chartType){
this.setTitle("水果销量统计图");
this.setCategoryAxisLabel("水果");
this.setValueAxisLabel("销量");
double[][] datas = new double[][] {{672, 766, 223, 540, 126}, {325, 521, 210, 340, 106}, {332, 256, 523, 240, 526}};
String[] rowKeys = {"苹果","梨子","葡萄"};
String[] columnKeys = {"北京","上海","广州","成都","深圳"};
this.setRowKeys(rowKeys);
this.setColumnKeys(columnKeys);
this.setDatas(datas);
createCategoryChart(chartType);
}
public static void main(String[] args) {
CategoryChartTest test = new CategoryChartTest();
//test.createTwoCategoryChart("BarCategoryChart"); // 1
//test.createTwoCategoryChart("LineCategoryChart");
//test.createThreeCategoryChart("BarCategoryChart");
test.createThreeCategoryChart("LineCategoryChart"); //4
JFreeChart chart = test.getChart();
ChartFrame frame = new ChartFrame("BarChart Tesing!", chart);
frame.pack();
frame.setVisible(true);
}
}
下面列出分别调用代码1、代码4时所画的图形:
调用代码1所画图形如下所示:
调用代码4时所画的图形如下所示:
- 大小: 20.2 KB
- 大小: 26.3 KB
分享到:
相关推荐
jfreechart 堆栈柱状图跟折线图结合拼接 jar包请戳http://download.csdn.net/detail/a156435646/7424707
利用jfreechart绘制的漂亮的折线图,实现双纵坐标,折线点标签还带箭头指示,非常直观,需要提前下载jfreechart.jar文件,否则我的类会报错,也即是要配置运行环境
JFreeChart是一款强大的Java图表库,它允许开发者创建多种类型的图表,包括饼图、柱状图和折线图。在Java应用中,JFreeChart是一个不可或缺的工具,尤其在数据分析、报表生成或可视化数据的场景下。下面我们将深入...
JFreeChart的`CategoryDataset`接口是存储分类数据的容器,可以用来创建折线图。你可以通过实现该接口的子类,如`DefaultCategoryDataset`,来填充数据。以下是一个创建数据集的例子: ```java ...
public JFreeChart createChart(String Ytitle, String title, CategoryDataset lineData, CategoryDataset barData) { //参考附件 return chart; } //struts 部分 <!--begin 维优特例 --> ...
JFreeChart 饼状图 柱状图 柱状图 堆积柱状图 折线图 这个是我特地开发的一个用JFreeChart开发的用来画图的项目,已经开发成形了各种项目的各种需求的项目,并且自己可以拓展,根据需求修改代码,完成项目的需要。 ...
JFreeChart 是一个开源的Java库,用于生成高质量的2D图表,如折线图、饼图、柱状图和堆栈柱状图等。它广泛应用于数据分析、报告和应用程序中,提供丰富的自定义选项来满足各种视觉需求。在本项目中,你将找到能够...
在这个“jfreechart折线图demo”中,我们将深入探讨如何使用 JFreeChart 创建和展示折线图。 1. **JFreeChart 概述** JFreeChart 提供了一套完整的 API,使得开发者可以方便地生成高质量的静态图表,并能轻松地将...
java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图 java JXL导出Excel源码及jfreechart 生成折线图,饼图
JFreeChart是一款强大的Java图形库,它允许开发者创建多种类型的图表,包括折线图、柱状图、饼图、散点图等。在本主题中,我们将深入探讨如何使用JFreeChart来绘制平面和3D的折线图。 首先,让我们了解折线图的基本...
该程序为main 函数,定义了三个方法,分别是jfreechart三种实现折线图的类型,返回的是一个chart 本程序是把图片保存到本地,当然实际应用中,只要在程序和页面中做相关配置即可以使用。 因为图片带点透明,所以...
JFreeChart 是一个开源的Java库,用于生成高质量的、多样的图表,包括折线图、柱形图、饼图、散点图等。在这个特定的案例中,我们关注的是如何利用JFreeChart来创建折线图和柱形图的混合图表,这种图表在数据可视化...
在Java编程环境中,JFreeChart库是一个强大的工具,用于创建各种复杂的图表,包括柱状图、折线图和雷达图。这些图表对于数据可视化和数据分析非常有用,可以帮助开发者直观地展示大量信息。以下是对给定文件中每个...
从给定的代码片段来看,我们正在探讨的是如何使用JFreeChart库在Java环境中创建不同类型的图表,包括饼图和折线图。JFreeChart是一个开源的Java图表库,提供了丰富的API来绘制各种统计图表,如条形图、饼图、折线图...
jfreechart是Java中一个流行的图表库,它提供了许多种类的图表,包括柱状图、折线图、饼图、雷达图等。本文主要介绍如何使用jfreechart绘制风速风向玫瑰图。 首先,了解jfreechart的基本结构。jfreechart的核心是...
Java JFreeChart库是用于创建高质量图表的开源项目,它为Java开发者提供了丰富的图形类型,如折线图、饼图和柱状图等。在Java后台生成这些图表,可以用于数据可视化,帮助用户更好地理解存储在数据库或其他数据源中...
**JFreeChart 折线图实例详解** JFreeChart 是一个强大的 Java 图形库,它提供了丰富的图表类型,包括折线图、柱状图、饼图等,适用于各种数据分析和展示场景。在这个例子中,我们将深入探讨如何使用 JFreeChart ...
JFreeChart双Y轴折线图实例,可以直接运行,实例类为LineChartDemo1.JAVA,有注释。 若想在web工程使用只需如下。 String filename = ServletUtilities.saveChartAsPNG(jfreechart, 600, 400, null, session); ...
在Java编程环境中,JFreeChart库是一个非常强大的工具,它允许开发者轻松地创建各种图表,如柱状图、饼图、时序图和折线图等。这些图表在数据分析、报表展示以及各种可视化应用中非常常见。下面我们将详细介绍如何...
在Java编程领域,JFreeChart是一个非常流行的图表库,它允许开发者创建各种复杂的数据可视化图形,包括折线图、柱状图、饼图等。在本篇博客中,"JfreeChart画双Y轴折线图"的主题,将探讨如何使用JFreeChart库来创建...