`
阅读更多

使用JFreeChart生成柱状图需要使用CategoryDataset作为统计图表的数据载体,生成柱状图后依然可以使用JFreeChart来设置统计图表的标题和图例格式。要实现设置柱状图的实际图表,同样要调用JFreeChart的getPlot方法来取得实际图表实例。

下面是一个生成简单柱状图的实例,该实例需要jfreechart-1.0.13.jar和jcommon-1.0.16.jar两个JAR包的支持。

 

BarChart3DDemo.java代码

  1. package jfreechat;  
  2.  
  3. import java.awt.Font;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6.  
  7. import org.jfree.chart.ChartFactory;  
  8. import org.jfree.chart.ChartUtilities;  
  9. import org.jfree.chart.JFreeChart;  
  10. import org.jfree.chart.axis.CategoryAxis;  
  11. import org.jfree.chart.axis.CategoryLabelPositions;  
  12. import org.jfree.chart.axis.NumberAxis;  
  13. import org.jfree.chart.plot.CategoryPlot;  
  14. import org.jfree.chart.plot.PlotOrientation;  
  15. import org.jfree.chart.title.TextTitle;  
  16. import org.jfree.data.category.CategoryDataset;  
  17. import org.jfree.data.category.DefaultCategoryDataset;  
  18.  
  19. public class BarChart3DDemo {  
  20.     /**  
  21.      * @param args  
  22.      * @author xuliang  
  23.      * @date 2010-3-17 10:29:58   
  24.      */ 
  25.     private static CategoryDataset getDataset(){  
  26.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  27.         dataset.addValue(4.0"""2010-02-01");  
  28.         dataset.addValue(4.4"""2010-02-04");  
  29.         dataset.addValue(4.2"""2010-02-05");  
  30.         dataset.addValue(4.1"""2010-02-08");  
  31.         dataset.addValue(4.0"""2010-02-11");  
  32.         dataset.addValue(4.1"""2010-02-12");  
  33.         dataset.addValue(3.9"""2010-02-19");  
  34.         dataset.addValue(4.0"""2010-02-22");  
  35.         dataset.addValue(6.1"""2010-02-25");  
  36.         dataset.addValue(4.9"""2010-02-26");  
  37.         dataset.addValue(4.4"""2010-03-01");  
  38.         dataset.addValue(4.3"""2010-03-05");  
  39.         dataset.addValue(4.4"""2010-03-08");  
  40.         dataset.addValue(5.6"""2010-03-11");  
  41.         dataset.addValue(5.9"""2010-03-12");  
  42.         dataset.addValue(4.1"""2010-03-15");  
  43.         return dataset;  
  44.     }  
  45.       
  46.     public static void main(String[] args) throws IOException {  
  47.         JFreeChart chart = ChartFactory.createBarChart3D(  
  48.             "MRP Run Time",             //图表标题  
  49.             "日期",                   //X轴标签  
  50.             "MRP单次运行总耗时",       //Y轴标签  
  51.             getDataset(),               //数据集合  
  52.             //PlotOrientation.HORIZONTAL,   //图表方向:水平  
  53.             PlotOrientation.VERTICAL,   //图表方向:垂直  
  54.             false,                      //是否显示图例  
  55.             false,                      //是否生成工具  
  56.             false                       //是否生成URL链接  
  57.         );  
  58.           
  59.         //重新设置图表标题,改变字体样式  
  60.         chart.setTitle(new TextTitle("MRP Run Time",new Font("黑体", Font.ITALIC, 22)));  
  61.         CategoryPlot plot = (CategoryPlot) chart.getPlot();  
  62.           
  63.         //取得X轴  
  64.         CategoryAxis categoryAxis = plot.getDomainAxis();  
  65.         categoryAxis.setLabelFont(new Font("宋体", Font.BOLD, 20));  
  66.         //设置分类标签倾斜45¡ã  
  67.         categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);  
  68.         categoryAxis.setTickLabelFont(new Font("宋体", Font.BOLD, 18));  
  69.           
  70.         //取得Y轴  
  71.         NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis();  
  72.         numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 20));  
  73.           
  74.         //输出到图片文件  
  75.         FileOutputStream fos = null;  
  76.         fos = new FileOutputStream("D:\\MRPTime.jpg");  
  77.           
  78.         ChartUtilities.writeChartAsJPEG(  
  79.             fos,    //文件流  
  80.             1,      //图片质量,0到1之间  
  81.             chart,  //统计图表对象  
  82.             800,    //图片宽度  
  83.             600,    //图片高度  
  84.             null    //图片信息  
  85.         );  
  86.           
  87.         fos.close();  
  88.     }  
  89. }  

在上面的代码中,为了修改柱状图坐标轴的显示格式,使用了两个XXXAxis实例,其中CategoryAxis代表柱状图的横轴,NumberAxis则代表柱状图的纵轴。

对于有坐标轴的统计图表而言,分别调用CategoryPlot的如下两个方法,即可取得柱状图的横轴和纵轴。

  • getDomainAxis:返回柱状图的横轴。
  • getRangeAxis:返回柱状图的纵轴。

一旦获得了柱状图的两个坐标轴之后,就可以任意修改坐标轴上的输出格式。

  1. package jfreechat;  
  2.  
  3. import java.awt.Font;  
  4. import java.io.FileOutputStream;  
  5. import java.io.IOException;  
  6.  
  7. import org.jfree.chart.ChartFactory;  
  8. import org.jfree.chart.ChartUtilities;  
  9. import org.jfree.chart.JFreeChart;  
  10. import org.jfree.chart.axis.CategoryAxis;  
  11. import org.jfree.chart.axis.CategoryLabelPositions;  
  12. import org.jfree.chart.axis.NumberAxis;  
  13. import org.jfree.chart.plot.CategoryPlot;  
  14. import org.jfree.chart.plot.PlotOrientation;  
  15. import org.jfree.chart.title.LegendTitle;  
  16. import org.jfree.chart.title.TextTitle;  
  17. import org.jfree.data.category.CategoryDataset;  
  18. import org.jfree.data.category.DefaultCategoryDataset;  
  19.  
  20. public class BarChartbook {  
  21.     /**  
  22.      * @param args  
  23.      * @author xuliang  
  24.      * @date 2010-3-17 22:29:43  
  25.      */ 
  26.     //返回一个CategoryDataset实例  
  27.     private static CategoryDataset getDataset(){  
  28.         //创建DefaultCategoryDataset实例  
  29.         DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
  30.         dataset.addValue(45000"深圳""JavaScript高级程序设计");  
  31.         dataset.addValue(38000"深圳""Java编程思想");  
  32.         dataset.addValue(24000"深圳""锋利的jQuery");  
  33.         dataset.addValue(32000"深圳""SAP高级应用开发");  
  34.         dataset.addValue(21000"深圳""精通Hibernate");  
  35.         dataset.addValue(37000"武汉""JavaScript高级程序设计");  
  36.         dataset.addValue(36000"武汉""Java编程思想");  
  37.         dataset.addValue(34000"武汉""锋利的jQuery");  
  38.         dataset.addValue(42000"武汉""SAP高级应用开发");  
  39.         dataset.addValue(12000"武汉""精通Hibernate");  
  40.         dataset.addValue(42000"北京""JavaScript高级程序设计");  
  41.         dataset.addValue(40000"北京""Java编程思想");  
  42.         dataset.addValue(34000"北京""锋利的jQuery");  
  43.         dataset.addValue(18000"北京""SAP高级应用开发");  
  44.         dataset.addValue(26000"北京""精通Hibernate");  
  45.         return dataset;  
  46.     }  
  47.       
  48.     public static void main(String[] args) throws IOException {   
  49.         JFreeChart chart = ChartFactory.createBarChart(  
  50.             "图书销量统计图",  //图表标题  
  51.             "书名",               //X轴书签  
  52.             "图书销量(册)",  //Y轴书签  
  53.             getDataset(),       //数据集  
  54.             PlotOrientation.VERTICAL,   //图表方向:垂直  
  55.             true,               //是否显示图例  
  56.             false,              //是否生成工具  
  57.             false               //是否生成URL链接  
  58.         );  
  59.           
  60.         //重新设置图表标题,改变字体样式  
  61.         chart.setTitle(new TextTitle(  
  62.                 "图书销量统计图",  
  63.                 new Font("黑体", Font.ITALIC, 22))  
  64.         );  
  65.         //取得图表的第一个实例  
  66.         LegendTitle legend = chart.getLegend(0);  
  67.         //修改图例的字体  
  68.         legend.setItemFont(new Font("宋体", Font.BOLD, 14));  
  69.           
  70.         CategoryPlot plot = (CategoryPlot) chart.getPlot();  
  71.         //取得横轴  
  72.         CategoryAxis axis = plot.getDomainAxis();  
  73.         axis.setLabelFont(new Font("宋体", Font.BOLD, 22));  
  74.         axis.setCategoryLabelPositions(CategoryLabelPositions.UP_45);  
  75.         axis.setTickLabelFont(new Font("宋体", Font.BOLD, 18));  
  76.           
  77.         //取得纵轴  
  78.         NumberAxis numberAxis = (NumberAxis) plot.getRangeAxis();  
  79.         numberAxis.setLabelFont(new Font("宋体", Font.BOLD, 22));  
  80.           
  81.         //输出文件  
  82.         FileOutputStream fos = null;  
  83.         fos = new FileOutputStream("D:\\BookSales.jpg");  
  84.         ChartUtilities.writeChartAsJPEG(  
  85.             fos,    //文件流  
  86.             1,      //图片质量,1到0之间  
  87.             chart,  //统计图表对象  
  88.             800,    //宽度  
  89.             600,    //高度  
  90.             null    //图片信息  
  91.         );  
  92.           
  93.         fos.close();  
  94.     }  

在此例中,创建CategoryDataset实例时调用了addValue方法,调用时传入了三个参数,其中第二个参数时一组数据的key,即在数据集中,数据按照“深圳”、“武汉”、“北京”三个地方进行了分类。

 

 

 

 

以上转自http://www.sunchis.com/html/java/javareport/2010/0317/81.html  若此链接还有效的话 请大家进入查看 !

分享到:
评论

相关推荐

    柱状图V3_Labviewhistogram_labview.柱形图_labview柱状图_labview柱状图

    柱形图_labview柱状图_labview柱状图"是一个关于使用Labview创建柱状图的项目,主要关注的是数据的可视化表示,这对于数据分析和结果展示至关重要。 柱状图是一种常用的数据表示方式,它通过长条的高度来显示各个...

    Qt开发之QtCharts柱形图绘制

    在Qt开发中,QtCharts模块是一个强大的工具,用于创建各种数据可视化图表,如柱状图、线图、饼图等。本教程将深入探讨如何利用QtCharts库来绘制柱形图,这对于数据展示和分析非常有帮助。我们将从以下几个方面进行...

    MATLAB 绘制三维柱状图

    总之,MATLAB的三维柱状图是展示多维数据的强大工具,而提供的"Untitled四种三维柱形图.m"文件则为学习者提供了深入理解和应用这一功能的机会。通过实践和探索这四个实例,初学者不仅可以掌握基本的绘图技巧,还能...

    CSS3 3D柱形图柱状图动画.zip

    【CSS3 3D柱形图柱状图动画】是一个使用纯CSS3技术实现的动态效果,它展示了如何通过CSS3的属性和选择器来创建一个具有视觉吸引力的3D柱状图。在这个项目中,多个3D柱状图按照高度的递增顺序排列,呈现出一种立体且...

    柱状图V3.0-112,柱状图怎么做,LabView

    在LabVIEW中创建柱状图是一种常见的数据可视化方式,它可以帮助我们直观地理解一组数据的分布情况。柱状图V3.0-112.vi是一个LabVIEW程序,专门用于制作柱状图,适用于进行各种数据分析任务。下面将详细阐述如何在...

    Qt 柱状图绘制

    在给定的“Qt 柱状图绘制”主题中,我们将深入探讨如何在Qt环境中创建和定制柱状图,以及相关的重要概念和技术。 柱状图是一种常用的数据可视化工具,它使用垂直或水平的长条来表示数据的类别和相应的量。在Qt中,...

    java使用JFreeChart制作柱形图

    Java 使用 JFreeChart 创建柱形图是一种常见的数据可视化方法,尤其在数据分析和Web应用程序中。JFreeChart 是一个强大的开源库,它提供了多种图表类型,包括柱形图、饼图、线图等,使得开发者能够方便地将数据转化...

    Java生成柱状图

    Java生成柱状图是一种在Java应用程序中展示数据的可视化方式,尤其适用于数据分析和报告。柱状图能够清晰地比较不同类别的数据量,是数据可视化的常见选择。在这个项目中,开发者提供了一个可以直接运行的解决方案,...

    使用java实现各种数据统计图(柱形图,饼图,折线图)

    true, // 是否显示图例(对于简单的柱状图必须是false) false, // 是否生成工具 false // 是否生成URL链接 ); // 自定义图表样式 CategoryPlot plot = chart.getCategoryPlot(); CategoryAxis domainAxis = ...

    制作柱形图折线图软件

    关于使用软件时的注意事项,描述中提到不能绘制横置的柱状图,这表明软件的设计可能较为基础,只支持最常见的垂直柱状图。此外,检查最后是否有回车可能是为了确保输入的数据格式正确,避免因额外的字符导致程序错误...

    使用three.js绘制3d图表(柱状图,饼状图,环状图,面积图等).zip

    使用three.js绘制3d图表(柱状图,饼状图,环状图,面积图等).zip使用three.js绘制3d图表(柱状图,饼状图,环状图,面积图等).zip使用three.js绘制3d图表(柱状图,饼状图,环状图,面积图等).zip使用three.js...

    R语言ggplot2柱状图(条形图)、簇状、并列、百分比绘图方法总结

    簇状柱状图和并列柱状图是柱状图的两种变体,簇状柱状图将不同组的数据并排展示,以便进行组间对比;并列柱状图则是将不同组别的柱子并列显示,也方便对比不同组别之间的差异。百分比柱状图是一种特殊形式的柱状图,...

    Bootstrap柱状图插件

    在Bootstrap中,柱状图是一种常用的数据可视化元素,它可以帮助用户直观地理解各种数据的对比和分布。Bootstrap柱状图插件通常基于JavaScript库,如jQuery或Chart.js,来增强其功能和交互性。 柱状图是数据可视化的...

    matlab实现柱形图

    在MATLAB中,柱形图是一种非常常用的可视化工具,它能有效地展示分类数据或一系列数值数据的比较。本文将深入探讨如何使用MATLAB来创建柱形图,以及如何设置x轴和y轴作为数据坐标轴。 首先,让我们了解柱形图的基本...

    C# WPF 实现柱状图

    在这个场景下,我们要讨论的是如何在WPF应用中利用MVVM模式来实现一个柱状图。以下是一些关键知识点: 1. **MVVM模式**:MVVM模式是软件开发中的一个重要概念,主要目的是解耦视图和业务逻辑。View负责显示用户界面...

    matlab 绘制 阴影 黑白 柱状图 条形图

    在MATLAB中,绘制柱状图或条形图是一种常用的数据可视化方法,尤其适用于比较不同类别之间的数值。本文将详细讲解如何使用MATLAB绘制带有阴影的黑白柱状图,以及如何利用提供的`figure`文件进行进一步理解。 首先,...

    echarts横向柱状图

    设置echarts多个柱状图重叠或者叠加情况,堆叠是数据不会叠加,可以设置堆叠(stack),否则没有,是叠加横向柱状图,柱形图显示数值,以及设置隐藏一段方案(关联和不关联),鼠标移动上去显示的提示内容,动态改变...

    WPF 柱状图 堆积柱状图 Chart使用

    在本文中,我们将深入探讨如何在WPF应用中使用Chart组件来创建柱状图和堆积柱状图。WPF(Windows Presentation Foundation)是.NET Framework的一部分,提供了丰富的UI设计能力,而Chart控件则是用于可视化数据的...

    Qt绘制柱状图,可以通用

    "Qt绘制柱状图,可以通用"这个程序包就是针对这一需求而设计的,它使用了流行的跨平台开发框架Qt以及Qwt库,实现了动态、交互式的柱状图展示功能。以下是对这个程序包所涉及知识点的详细解释: 1. **Qt框架**:Qt是...

    iReport+JasperReport柱状图

    iReport+JasperReport柱状图开发指南 本文详细介绍了使用iReport和JasperReport开发柱状图的过程,包括确定数据源类型、开发数据源类、设计图表属性等步骤。作者分享了自己的实践经验,遇到的困难和解决方法,旨在...

Global site tag (gtag.js) - Google Analytics