前面刚整理了关于JFreeChart的基本使用:http://zhangzhenting.iteye.com/blog/619010
补充:生成立体柱状图(返回立体柱状图的JFreeChart对象)
代码如下,很多配置依然和前面相同,很多属性的配置可以参考前面的例子。
public JFreeChart createBarChart3D(String title, String botTitle, String leftTitle, CategoryDataset data, boolean url) { // 创建栈堆型柱状图形 JFreeChart chart = ChartFactory.createBarChart3D(title, botTitle, leftTitle, data, PlotOrientation.VERTICAL, true, true, url); CategoryPlot plot = chart.getCategoryPlot(); StandardCategoryItemLabelGenerator scg = new StandardCategoryItemLabelGenerator(StandardCategoryItemLabelGenerator.DEFAULT_LABEL_FORMAT_STRING, new DecimalFormat("0")); BarRenderer3D renderer = new BarRenderer3D(); renderer.setBaseOutlinePaint(Color.BLACK); // 设置每个地区所包含的平行柱的之间距离 renderer.setItemMargin(0.1); // 显示每个柱的数值,并修改该数值的字体属性 renderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator()); // 将每个柱的数值显示在柱顶 renderer.setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT)); renderer.setItemLabelAnchorOffset(10D); // 设置标签是否显示 renderer.setBaseItemLabelsVisible(true); // 设置标签数字的显示位置 renderer.setBaseItemLabelsVisible(true); // 设置超连接 renderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator()); // 超连接可以扩展StandardCategoryURLGenerator对象的方法generateURL(); renderer.setBaseItemURLGenerator(new StandardCategoryURLGenerator("aa.html")); // 设置柱型的间距 renderer.setMaximumBarWidth(0.2); renderer.setBaseItemLabelGenerator(scg); plot.setRenderer(renderer); // 设置柱的透明度 plot.setForegroundAlpha(0.9f); ValueAxis va = chart.getCategoryPlot().getRangeAxis(); // 设置Y轴的最小值 va.setLowerBound(0); return chart; }
不仅可以让轴数值进行一定角度的旋转,当柱图显示的数值太长时,为避免出现覆盖的情况,也可以对柱图上面的数值进行旋转,代码如下:
public JFreeChart createBarChart(String title, CategoryDataset dataSet, String Xtitle, String Ytitle, boolean url) { // 创建拄图类型的图表对象 JFreeChart chart = ChartFactory.createBarChart(title, Xtitle, Ytitle, dataSet, PlotOrientation.VERTICAL, true, false, url); StandardCategoryItemLabelGenerator scg = new StandardCategoryItemLabelGenerator(StandardCategoryItemLabelGenerator.DEFAULT_LABEL_FORMAT_STRING, new DecimalFormat("0")); // 显示的图例放到右边 // chart.getLegend().setPosition(RectangleEdge.RIGHT); Font ticketLableFont = new Font("Arial", Font.PLAIN, 11); Font labelFont = new Font("Arial", Font.PLAIN, 12); CategoryPlot plot = chart.getCategoryPlot(); plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT); // 设置详细图表的显示细节部分的背景颜色 plot.setBackgroundPaint(new Color(255, 255, 204)); // 设置是否显示水平网格线 plot.setRangeGridlinesVisible(true); // 设置水平网格线颜色 plot.setRangeGridlinePaint(Color.black); // 将所有数据转换为整数形式 NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); // 设置X轴标题的倾斜程度 CategoryAxis domainAxis = plot.getDomainAxis(); domainAxis.setLabelFont(labelFont);// 轴标题 domainAxis.setTickLabelFont(ticketLableFont);// 轴数值 domainAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 6.0)); // 设置柱状体与图片边框的左右间距 // domainAxis.setLowerMargin(0.01); // domainAxis.setUpperMargin(0.01); // 设置柱状体与图片边框的上下间距 ValueAxis rAxis = plot.getRangeAxis(); rAxis.setLabelFont(labelFont); rAxis.setTickLabelFont(ticketLableFont); rAxis.setUpperMargin(0.15); rAxis.setLowerMargin(0.15); BarRenderer barRenderer = new BarRenderer(); // 设置每个柱的最大宽度 barRenderer.setMaximumBarWidth(0.20); // 设置每一个柱状图都显示数值 barRenderer.setBaseItemLabelGenerator(scg); barRenderer.setBaseItemLabelsVisible(true); ItemLabelPosition itemLabelPosition = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT, TextAnchor.HALF_ASCENT_LEFT, -0.57D); barRenderer.setBasePositiveItemLabelPosition(itemLabelPosition); barRenderer.setBaseNegativeItemLabelPosition(itemLabelPosition); ItemLabelPosition itemLabelPositionFallback = new ItemLabelPosition(ItemLabelAnchor.OUTSIDE12, TextAnchor.BASELINE_LEFT, TextAnchor.HALF_ASCENT_LEFT, -0.57D); barRenderer.setPositiveItemLabelPositionFallback(itemLabelPositionFallback); barRenderer.setNegativeItemLabelPositionFallback(itemLabelPositionFallback); plot.setRenderer(0, barRenderer); // 设置是否在柱图的状态条上显示边框 CategoryItemRenderer renderer = (CategoryItemRenderer) plot.getRenderer(); BarRenderer render = (BarRenderer) plot.getRenderer(); render.setItemMargin(0.0); render.setBaseItemLabelFont(new Font("Arial Narrow", Font.TRUETYPE_FONT, 10)); // 设置没个柱状的颜色 renderer.setSeriesPaint(0, new Color(128, 128, 192)); renderer.setSeriesPaint(1, new Color(128, 0, 64)); renderer.setSeriesPaint(2, new Color(128, 128, 0)); return chart; }
相关推荐
在"使用JFreeChart小结(一)"这篇博文中,作者主要分享了入门JFreeChart的基本步骤和一些关键概念。 首先,让我们了解如何添加JFreeChart到项目中。通常,你可以通过Maven或Gradle构建工具将JFreeChart库作为依赖...
#### 二、JFreeChart的获取与资源 JFreeChart是JFree公司在开源平台SourceForge.net上维护的一个项目,与之相关的还有JFreeReport、JCommon和JFreeDesigner等工具,分别用于报表处理、提供公共类库支持以及报表设计...
#### 六、小结 JFreeChart作为一款成熟且功能全面的Java图表绘制库,不仅能够满足大多数开发者对于图表的基本需求,还提供了丰富的自定义选项以适应更复杂的应用场景。无论是初学者还是经验丰富的开发者,都可以...
#### 五、小结 通过上述介绍和示例代码,我们可以看到JFreechart是一个功能强大且易于使用的图表库。它可以帮助开发者轻松地在Java应用程序中创建各种类型的图表。为了更好地利用JFreechart,建议开发者深入了解其...
#### 四、小结 通过以上内容的学习,我们可以了解到JFreeChart中各种函数的具体作用及其应用场景。在实际开发过程中,合理利用这些函数能够帮助我们更高效地创建出美观且实用的图表。希望本文能够为大家提供一定的...
jasperReport+ireport 报表开发小结总结了 JasperReports 的基本概念、特点、类库依赖、开发流程和 ireport 使用说明等内容,为读者提供了一个全面的了解 JasperReports 和 ireport 的报表开发指南。
### 小结 本文通过介绍数据库设计的基本原则以及动态交叉表的生成与应用,展示了如何通过遵循数据范式来优化数据库结构,并在此基础上实现了数据的有效管理和灵活展示。这对于提高数据处理能力、优化业务流程具有...
在【优秀计算机软件实习小结模板】中,实习地点是深圳市百盛佳信息咨询有限公司,实习时间为20__年12月5日至20__年4月5日。实习内容涉及Java软件开发,这是一种广泛使用的编程语言,尤其适合构建企业级应用。在实习...
1.4 小结 13 第2章初识Struts 14 2.1 Struts的优点 14 2.2 Struts的动作处理流程 15 2.3 拦截器 17 2.4 Struts配置文件 18 2.4.1 struts.xml文件 19 2.4.2 struts.properties文件 26 2.5 Struts应用程序示例...
这篇实习小结主要涵盖了计算机软件实习的一些核心要点,包括实习的目的、实习地点、实习时间、实习内容以及实习过程中的挑战和解决方法。以下是对这些知识点的详细说明: 1. **实习目的**:实习的主要目标是将所学...
第一部分 Strut 2:一个全新的框架 第1章 Struts 2:现代Web框架 2 1.1 Web应用程序:快速学习 2 1.1.1 构建Web应用程序 2 1.1.2 基础技术简介 3 1.1.3 深入研究 6 1.2 Web应用程序框架 7 ...15.7 小结 332
1.4 小结 13 第2章 初识Struts 14 2.1 Struts的优点 14 2.2 Struts的动作处理流程 15 2.3 拦截器 17 2.4 Struts配置文件 18 2.4.1 struts.xml文件 19 2.4.2 struts.properties文件 26 2.5 Struts应用程序示例 26 ...
#### 四、小结 通过对iText的学习,我们可以有效地利用其强大的功能来设计和生成高质量的报表。无论是简单的数据表格还是复杂的历史曲线图,iText都能够提供全面的支持。对于从事计算机运维工作的技术人员来说,...
系统的小结与展望部分提到,将进一步优化算法,提升预测准确性和系统易用性,同时扩大气象数据覆盖范围,以适应更多类型的水稻品种和繁殖需求。 总结,这个基于人工智能和机器学习的水稻两用核不育系繁殖基地智能...
- **小结区**:用于汇总数据,显示总和或其他统计信息。 - **页眉/页脚**:每个页面的顶部和底部区域,通常用于显示页码、时间戳等。 ##### 4.2. 变量、参数及字段 - **变量**:在报表设计过程中,可以定义变量来...
我也在学习中,就我的学习经验,给出以下小结。(注意:个人观点,仅供参考,欢迎指正。)??1.什么是模式???模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是...